2013-05-07 2 views
6

이 질문은 몇 가지 커밋을 되 돌리는 동안 일부 커밋을 유지하고 싶다는 점에서 다른 질문과 다릅니다.`git fetch upstream;를 되돌리려면 어떻게해야합니까? git merge upstream/master`?

내 설정은 다음과 같습니다.

Upstream repo on github (public repo which I don't own) 
Personal repo on my server(git clone --bare $upstream) 

내 흐름이 같았다 :

Need to customize my personal branch 
    1. check out origin/master(Personal) 
    2. make changes 
    3. push to origin/master 

Need to get new feature or bug fix from the original author(github) 
    1. git fetch upstream 
    2. git merge upstream/master 

가 지금은/마스터가 버그가 상류 찾아 내가 가져 오기 전에
어떻게 상태로 돌아 가야합니까, 되돌릴/상류 합병 마지막으로?

편집.

  1. 한다고 가정

    나는

  2. 내가 팀 구성원이 원산지/마스터 (개인)

가 지금은 1 단계를 실행 취소 할 푸시 무엇 합병 상류 합병했다.

git reset --hard co mmit_sha_of_one_prior_the_merge_1

(비록 샤를 찾는 것이 쉽지 않지만. 자식 로그는 많은 상류의 샤의 커밋을 보여줍니다, 그래서

가 어떻게이 2 단계 병합을 유지하지 upstream의하지만 origin/master 이다 커밋 SHA-of_one_prior_the_merge_1)를 쉽게 찾을 수 아니에요?

  1. 내가 상류
  2. 합병 약간 더 복잡한 시나리오를 가정 나는 다른 팀 구성원이 개인
에 개인
  • 나는 또한 밀어 내 작품에 밀어 무엇 합병

    이제 업스트림 병합을 실행 취소하고 싶습니다. 어떻게해야합니까?

  • +0

    http://stackoverflow.com/questions/2389361/undo-a-git-merge – 1615903

    답변

    -1

    (당신이 origin/master에 병합을 밀어하지 않은 경우) 당신과 함께 origin/master 상태로 해당 지역의 master 지점을 재설정 할 수 있습니다

    git reflog 
    
    : 그건 당신이 reflog를 사용 할 수없는 경우

    git reset --hard origin/master 
    

    자세한 내용은 undoing a git rebase을 참조하십시오.

    +0

    이것은 OP가 원했던 것의 반대입니다. –

    2

    실제 병합 커밋을 했으므로 자신 만의 변경을하면 - 할 수 있어야합니다 :

    git reset --hard HEAD~1 
    

    마지막 커밋이 문제의 병합 커밋이라고 가정합니다.

    +0

    병합 - 커밋이 아닌 내 개인 레포에 다른 커밋이 있습니다. – eugene