힘내 : "(지점 없음)"에있는 것처럼 보이고 내 변경 사항을 잃어 버렸습니다.


11

내 Git 작업 공간에서 Github로 푸시하려고했지만 추가 및 커밋 된 변경 사항이 업로드되지 않은 것 같습니다.

그런 다음 "git branch"를 수행하면 다음과 같은 것이 나타납니다.

git branch
* (no branch)
  master

어리석게도, 나는 다시 마스터로 돌아갈 수 있다고 생각

git checkout master

그리고 지금 내 변화가 사라진 것 같습니다. 내 마스터 지점은 하루 정도입니다. 그리고 이것으로 다시 전환 할 수있는 방법이없는 것 같습니다 (지점 없음).

변경 사항이 손실됩니까? 아니면 그들을 복구 할 수있는 방법이 있습니까?

답변:


13

를 수행하지 않는 한 git gc아무것도 손실되지 않았습니다. 당신이해야 할 일은 다시 찾는 것입니다 :) 무엇을 얻습니까?

git reflog show

그러면 발생한 상황과 누락 된 노드의 ID가 표시됩니다.


2
마스터를 지정하지 않고 git reflog를 수행합니다. 브랜치에 묶이지 않은 커밋을 가질 수 있으며,이 경우에 일어난 일입니다. 새 분기로 커밋을 체크 아웃하여 경로를 가질 수 있습니다.
Jeff Ferland

당신 말이 맞을 겁니다 그 질문에 대한 나의 가정은 그것이 커밋에 대한 마스터 였다는 것이었다. 내 답변을 업데이트했습니다.
CK.

휴, 고마워요! 나는 지점을 가지지 않기 위해 거대한 은닉을 저질렀 고 그것을 마스터로 전환하여 병합했습니다 ...
Pascal

꽤 오랜 세월이 지났지 만 나도 이것으로 뛰어 들었습니다. 나는 다시 마스터 지점으로, 갑자기 똥으로 전환했습니다. 2 일 동안 (즉, 하루 8 시간) 모두 사라졌습니다. 정말 고맙습니다!
Falgantil

5

위의 답변이 맞습니다. 이것이 내가 한 일입니다.

$ git reflog
5b35f6d HEAD@{1}: pull github master: Fast forward
ca92d15 HEAD@{2}: checkout: moving from 759dab1b15731ce7680c26839ca470d20e709e36 to master
759dab1 HEAD@{3}: commit (merge): Merge branch 'master' of github.com:gonzojive/IODB-ui into HEAD
065e269 HEAD@{4}: commit: added fieldsets to snazzy form
f357606 HEAD@{5}: commit: preliminary support for google maps.
ca92d15 HEAD@{6}: checkout: moving from master to ca92d15d272867b63d54f96d4aa57f8ecc479cd0

$ git checkout ca92d15d272867b63d54f96d4aa57f8ecc479cd0

"오 아니!" 순간은 이것입니다 :

checkout: moving from master to ca92d15d272867b63d54f96d4aa57f8ecc479cd0

ca92d15d272867b63d54f96d4aa57f8ecc479cd0는 (분기 없음)으로 표시되는 익명 분기입니다. 다시 돌아가려면 git checkout을 수행하면 이전 의사 브랜치가 복원됩니다.

마음의 평화를 위해 실수로 gc를 저장하기 전에 git 저장소를 백업하는 것이 좋습니다.


단순히 지점을 확인하는 것이 효과가 없었습니다. 기능 분기에서 변경 사항이 올바르게 작성되었습니다. 여전히 내 작업 공간에서 볼 수 없었습니다. 다른 방법으로 변경 사항을 잃어 버렸을 것입니다. 그러나을 실행하여 변경 사항을 복구 할 수 git reset --hard <commit-id>있습니다. 커밋 ID는의 첫 번째 열에있는 영숫자 코드입니다 git reflog. effectif.com/git/recovering-lost-git-commits를 참조하십시오 .
Torsten

2
# if you have already checked out to master, 
# you won't know the commit-ish of your "no branch":

git fsck --lost-found # (to find your <commit-ish>)
git merge <commit-ish>

# if you are still on your "no branch" commit:

git log # (the commit-ish will be on the first line)
git checkout master
git merge <commit-ish>

# or

git log | head -n 1 | cut -d ' ' -f 2 | pbcopy
git checkout master
git merge <commit-ish>

rev-list를 포함한 여러 가지 방법 중에서 fsck만이 분기없는 커밋을 찾는 데 도움이되었습니다. 대단히 감사합니다.
temoto
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.