git 에서 잃 어 버 린 제출 을 찾 는 방법 (commt)
Let’s go!
준비 하 다.
우 리 는 먼저 실험 용 창 고 를 만 들 고 그 안에 몇 개의 제출 과 가 지 를 만 들 었 다.BTW: 아래 명령 을 셸 에 직접 복사 해서 실행 할 수 있 습 니 다.
mkdir recovery;cd recovery
git init
touch file
git add file
git commit -m "First commit"
echo "Hello World" > file
git add .
git commit -m "Greetings"
git branch cool_branch git checkout cool_branch
echo "What up world?" > cool_file
git add .
git commit -m "Now that was cool"
git checkout master
echo "What does that mean?" >> file
삭 제 된 분기 제출 복구지금 repo 에 branch 가 두 개 있어 요.
$ git branch
cool_branch
* master
현재 창고 에 제출 되 지 않 은 변경 사항 저장$ git stash save "temp save"
Saved working directory and index state On master: temp save
HEAD is now at e3c9b6b Greetings
분기 삭제$ git branch -D cool_branch
Deleted branch cool_branch (was 2e43cd5). $ git branch * master
git fsck --lost-found
명령 으로 방금 삭 제 된 분기 의 제출 대상 을 찾 아 라.$git fsck --lost-found dangling commit 2e43cd56ee4fb08664cd843cd32836b54fbf594a
git show 명령 으로 찾 은 대상 의 내용 을 보고 찾 은 대상 의 내용 을 봅 니 다.git show 2e43cd56ee4fb08664cd843cd32836b54fbf594a commit 2e43cd56ee4fb08664cd843cd32836b54fbf594a Author: liuhui <liuhui998[#]gmail.com> Date: Sat Oct 23 12:53:50 2010 +0800 Now that was cool diff --git a/cool_file b/cool_file new file mode 100644 index 0000000..79c2b89 --- /dev/null +++ b/cool_file @@ -0,0 +1 @@ +What up world?
이 제출 대상 은 확실히 우리 가 앞에서 삭제 한 분기 의 내용 입 니 다.다음은 우리 가 그것 을 어떻게 회복 해 야 할 지 를 고려 해 야 한다.git rebase 로 복구 하기
$git rebase 2e43cd56ee4fb08664cd843cd32836b54fbf594a First, rewinding head to replay your work on top of it... Fast-forwarded master to 2e43cd56ee4fb08664cd843cd32836b54fbf594a.
이제 git log 명령 으로 복구 되 었 는 지 확인 합 니 다. $ git log commit 2e43cd56ee4fb08664cd843cd32836b54fbf594a Author: liuhui <liuhui998[#]gmail.com> Date: Sat Oct 23 12:53:50 2010 +0800 Now that was cool commit e3c9b6b967e6e8c762b500202b146f514af2cb05 Author: liuhui <liuhui998[#]gmail.com> Date: Sat Oct 23 12:53:50 2010 +0800 Greetings commit 5e90516a4a369be01b54323eb8b2660545051764 Author: liuhui <liuhui998[#]gmail.com> Date: Sat Oct 23 12:53:50 2010 +0800 First commit
제출 은 되 찾 는 것 이지 만 가 지 는 되 찾 을 수 없습니다. liuhui@liuhui:~/work/test/git/recovery$ git branch * master
git merge 로 복구우 리 는 방금 복구 한 제출 을 삭제 했다.
$ git reset --hard HEAD^ HEAD is now at e3c9b6b Greetings
방금 지 운 것 을 다시 찾 아 오 너 라. git fsck --lost-found dangling commit 2e43cd56ee4fb08664cd843cd32836b54fbf594a
하지만 이번 에는 합병 명령 으로 복구 합 니 다. $ git merge 2e43cd56ee4fb08664cd843cd32836b54fbf594a Updating e3c9b6b..2e43cd5 Fast-forward cool_file | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 cool_file
git stash 복구앞에서 우 리 는 git stash 로 제출 하지 않 은 내용 을 저장 하 였 는데, 만약 이 저장 소 가 부주의 로 삭제 되면 어떻게 합 니까?
현재 repo 에 저 장 된 저장 소: $git stash list stash @ {0}: On master: temp save
비 워 두 기: $git stash clearliuhui@liuhui:~/work/test/git/recovery$ git stash list
git fsck – lost - found 로 다시 찾 아 오기: $git fsck – lost - found dangling commit 674 c0618ca7d0c251902f 0953987 ff 71860 cb 067
git show 로 돌아 온 내용 이 맞 는 지 확인 해 보 세 요.
$git show 674c0618ca7d0c251902f0953987ff71860cb067 commit 674c0618ca7d0c251902f0953987ff71860cb067
Merge: e3c9b6b 2b2b41e
Author: liuhui <liuhui998[#]gmail.com> Date: Sat Oct 23 13:44:49 2010 +0800 On master: temp save diff --cc file
index 557db03,557db03..f2a8bf3
--- a/file
+++ b/file
@@@ -1,1 -1,1 +1,2 @@@ Hello World ++What does that mean?
문제 가 없 을 것 같 습 니 다. 좋 습 니 다. 그럼 회복 하 겠 습 니 다.$ git merge 674c0618ca7d0c251902f0953987ff71860cb067
Merge made by recursive. file | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
비고이 글 의 주요 내용 은 여기 서 나온다. The illustrated guide to recovering lost commits with Git 나 는 정리 하 는 일 을 했다.
만약 문장의 일부 명령 에 대해 익숙 하지 않다 면 참고 할 수 있다 Git Community Book 중국어 버 전
사실 여기 서 가장 중요 한 명령 은 git fsck – lost - found 입 니 다. git 에서 commt 를 삭제 한 후에 실제 삭제 가 아니 라 허공 대상 (dangling commt) 이 되 었 기 때 문 입 니 다.우 리 는 이 허공 에 떠 있 는 대상 (dangling comit) 을 찾 아 git rebase 을 사용 하 든 git merge 을 사용 하 든 회복 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZoopKeeper 시각 화 zkui 프레임 워 크프로필 zkui 는 zookeeper 에 웹 관리 인터페이스 를 제공 하여 zookeepr 의 노드 값 을 CRUD 로 조작 할 수 있 고 안전 인증 도 제공 합 니 다.github 주소:https://github....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.