힘내 : “(지점 없음)”에있는 것처럼 보이고 내 변경 사항을 잃어 버렸습니다. 커밋 된 변경 사항이 업로드되지 않은

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

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

git branch
* (no branch)
  master

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

git checkout master

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

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



답변

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

git reflog show

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


답변

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

$ 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 저장소를 백업하는 것이 좋습니다.


답변

# 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>