2011-08-08 4 views
0

심각한 문제가 제 자식 저장소에 발생했습니다. 나는 이전에 2 개의 가지를 가지고 있었고, 나는 지난 밤에 암호를 썼고 github에가는 것을 잊었다. 오늘 아침에 나는 다른 머신을 사용하여 새로운 브랜치를 포크 해보고 코드를 드롭 다운 상자에 넣어서 어떤 머신을 사용하든 문제가되지 않도록했다. 그러면 git이 에러 메시지를 보냈다 : "permission denied". 그런 다음 실험실을 사용하고 있지 않다는 것을 알았 기 때문에 실험실을 열고 방금 만든 지점에 들어가려고했습니다. 하지만 그렇게 할 수없는 것처럼 보입니다. 그리고 더 나쁜 것은 다른 컴퓨터에서 저지른 모든 코드가 사라졌습니다! 나는 목록 지점을 볼 수 git branch을 사용하고 지금은 같이이다 : 첫 번째 "centeredForm"는 내가 다른 컴퓨터에 생성 지점 및 "centeredform을"입니다git branch가 엉망이되었습니다.

centeredForm (shang's conflicted copy 2011-08-08) 
* centeredform 
    master 
    refinement 

내가 나중에 내 labtop에 생성 된 지점입니다. 제 코드가 없어 졌나요? 아니면 이전 상태로 복원 할 수있는 방법이 있습니까?

+0

centeredForm 브랜치 (어제의 작업을 가정 할 때)로 바꾸려고 했습니까? git checkout centeredForm – richardolsson

+0

유선은 "centeredForm"브랜치가 거기에있는 것 같지만 git은 "error : pathspec 'centeredForm'이 git에 알려진 모든 파일과 일치하지 않는다고 말합니다. " –

답변

5

커밋 된 경우 손실되지 않습니다. 역사는 항상있다 :

git reflog 

그럼 당신은 어떤 혼란을 커밋 마지막의 SHA를 잡아 및 취소 할 수 있습니다 :

git reset --hard <SHA> 

중요 : 첫 번째 백업 everyhing는. reset --hard은 커밋되지 않은 변경 사항을 모두 삭제합니다.

0

커밋이 아직 있는지 확인하고 dropbox가 "잘못 배치"되지 않았는지 확인합니다. git rev-parse branchYouLost을 사용하십시오. 그러면 해당 브랜치에 대한 커밋이 검색됩니다.

보다 내가이 잘못된 개체 있음을 알려줍니다이 있으리라 믿고있어 귀하의 오류 메시지의 모습에서

git cat-file -t SHA_above_command_gave_you을한다. 어떤 경우에는 dropbox가 지점의 끝을 잃어버린 것처럼 보일 것입니다.

잃어버린 커밋을 찾아내는 또 다른 방법은 git reflog을 사용하고 그 중 하나에 원하는 커밋이 포함되어 있는지 확인하는 것입니다. git cat-file -p [email protected]{n}을 사용하여 로그 메시지를 가져 와서 누락 된 메시지인지 확인하십시오.

관련 문제