2012-06-13 2 views
0

"git stash"및 "git stash pop"을 자주 사용하여 작업 트리의 변경 사항을 저장하고 복원합니다. 이것이 내가 한 일이며 이전의 커밋되지 않은 변경 사항은 이제 사라졌습니다. 병합 후 숨겨진 변경 사항 복구 --no-ff

git stash -u 
git checkout master 
git pull --rebase 
git checkout dev 
git merge --no-ff master 
10 files changed, 1000 insertions(+), 2000 deletions(-) 
git stash pop 
CONFLICT (content): Merge conflict in file.ext 

그럼 내가 병합을 되돌릴 수 있다고 생각하고, 내가 그랬어 :

git reset --hard origin/master 
git reset --hard origin/master 

지금 내가 file.ext 어디서나에만 병합 된 코드를 내 이전 은닉 커밋되지 않은 변경 사항이 표시되지 않습니다. 원래 숨긴 모든 변경 사항을 다시 가져올 수 있습니까?

답변

3

popstash에서 벗어나면 stash에서도 제거됩니다. 따라서 숨겨진 변경 사항이 작업 디렉토리로 다시 덤프되었습니다. 그런 다음 reset 때 동일한 변경 사항을 되돌릴 수 있습니다.

git reset --hard은 몇 가지 위험한 "완전히 누락 될 수있는 작업"명령 중 하나입니다. Thisreset의 다양한 측면을 매우 잘 설명합니다.

요약하면 더 이상은 stash에 없으며 작업 디렉토리는 reset입니다. 그래서 그들은 비트와 바이트의 에테르로 잃어 버렸을 가능성이 큽니다. 이러한 변경 사항은 한때 숨겨져 있었기 때문에 git fsck --lost-found을 사용하여 커밋을 찾을 수 있습니다.

+0

감사합니다. 힘든 방법을 배우십시오 ... – user43092

+0

순서가 있다고 언급 할 가치가 있습니다 ... –