2017-01-23 6 views

답변

2
: 나는 세부 사항에 대한 이미지를 참조하시기 바랍니다 지점 A를 저지 사람들을 이동하고 지점 B.에서 그들을 제거 할, 나는 지점 (A)에서 필요한 두 개의 커밋을 가지고 있지만 난 이제 B를 분기하는 밀어

먼저 여기에서 선택하려는 두 개의 커밋 인 branchAcherry-pick으로 이동하십시오.

$ git checkout branchA 
$ git cherry-pick <commit1>  # commit1 = 0a18e0f 
$ git cherry-pick <commit2>  # commit2 = e604ce4 

$ git push origin HEAD   # push to remote 

지금 revert 또는 rebase에 의해 branchB에서 두 커밋을 제거합니다. 되돌리기는 git 히스토리를 변경하지 않기 때문에 바람직합니다.

되돌리기 :

$ git checkout branchB 
$ git revert <commit1> 
$ git revert <commit2> 
$ git push origin HEAD 

Rebase 현재 :

$ git checkout branchB 
$ git rebase -i efb2443   # go back to the commit before the two commmits you want to remove 

Now comment out (adding `#` before the commit hash) the two commits you want to remove. 

$ git push -f origin HEAD  # you need to force(-f) push as history is changed here by rebasing 
+0

내가 이 (서버에 코드를 밀어) 체리 - 선택 후 다른 작업을 수행해야합니까? – lee

+0

예, 최신 코드를 원격으로 푸시해야합니다. –

+1

@lee 대화식 rebase ('rebase -i')를 사용하여 제거하지 말고 B 지점에서 두 커밋을 되돌리는 것이 더 나을 수도 있습니다. 누군가 (또는 많은 사람들이) 이전에 B 지점으로 푸시 한 변경 사항을 가져온 경우 업데이트 된 지점을 강제로 푸시 할 때 해당 사용자의 기록을 다시 작성하게됩니다. 이것은 그들에게 두통을 줄 것이며, 망할 에티켓에 반대합니다. – mattliu