2010-02-06 9 views
35

안녕하세요 저는 git를 처음 사용하기 때문에 풀을 취소해야합니다. 아무도 도와 줄 수 있습니까?!? 그래서 내가했던 것은이 갈등의 무리를 만들어 git pull 실행 취소 --rebase

  • 자식 숨겨 놓은
  • 자식 풀
  • 자식 숨김 팝

  • --rebase

    1. 자식 커밋 ...하고 조금 잘못되었다. 이제 'git stash list'를 실행하면 내 숨김이 여전히 있음을 알 수 있습니다. git commit을 한 직후에 나의 repo를 되돌릴 수 있습니까? 그래서 효과적으로 내 repo는 내가 만든 변경 사항과 서버의 새로운 내용 만 포함하고 있습니까?

    답변

    37

    당신이

    을에서 지난

    을 지적하여 커밋 HEAD의 목록을 볼 수 git reflog를 사용하여 수행 되돌아 가고 싶은 커밋 인덱스를 찾을 수

    git checkout -b after-commit [email protected]{1} # or the commit you want to recover 
    

    정확한 위치에 새 분기를 만들고 체크 아웃하십시오.

    +0

    이 작업을 수행하면 병합으로 파일을 덮어 쓰겠다는 오류 메시지가 표시됩니다. 이것을 무시할 수있는 방법이 있습니까? – Thomas

    +4

    작업 디렉토리가 깨끗한 지 확인하십시오 (git 재설정 - HEAD가 그렇게 할 것입니다). 또한 rebase가 더 이상 진행되지 않는지 확인하십시오 (git rebase --abort). –

    +0

    내 친구는 생명의 은인이야! 고마워요 :) – Thomas

    -1

    사용 git log -g하고 그냥 git checkout 인덱스

    +0

    이것은 실제로 도움이되지 않습니다. 왜냐하면'pull --rebase'는 방금 끌어온 것의 위에 커밋을 재생하기 때문입니다; 이 경우 커밋 된 커밋 중 가장 오래된 커밋을 체크 아웃 할 수 없습니다. –

    71

    사실, 더 쉽습니다. 힘내는이라는 참조를 유지합니다.

    git reset --hard ORIG_HEAD 
    
    +4

    일주일 분의 일을 거의 잃어 버렸지 만 부활했다. 그것은 누군가 다른 사람이 브랜치를 리베이스하고 변경 사항을 먼저 적용하지 않고 강제로 푸시하도록 유도 할 때 일어납니다. 이것은 병합 대신 리포지토리를 모든 사람에게 강제로 수행하는 프로젝트와 관련하여 작업하는 경우 반드시 알아야합니다. 청소기 기록을 망치면 리베이스 작업은 위험합니다. – Gavin

    4

    당신은 명령

    커밋 자식에 대한 필요성을 제거
    git reset --merge 
    

    체크 아웃한다 : 그래서, 그것으로 쉽게 끌어 오기 전에 숨겨두기 (rebase에 대해 모르겠다.)

    이 명령은 충돌이 풀리기 전 상태로 커밋되지 않은 변경 사항이있는 작업 영역을 반환합니다.