2015-01-20 3 views
0

쉬운 방법을 사용하고 코딩 작업을 덜고 있습니다. 나는 자식에 다음 커밋이병합 대신 병합을 수행하려면 어떻게해야합니까?

A->B->C->D 
나는 기본적으로 C를 저지 제거하고 D를 저지 유지하려는

- 나는

내가

git checkout -b myfix B 
git cherry-pick D 
git checkout master 
git merge myfix 

그러나의를 시도하는 방법을 방법을 찾기 위해 애 쓰고 있어요 코스 커밋 C가 병합 된 이후에도 계속 존재합니다.

myfix를 master로 바꾸는 방법이 있습니까? -i 대화 형 플래그입니다

또는 다른 방법

A->B->D->[new commit] 
+1

'git revert '가 아마도 당신이 찾고있는 것일 것입니다. [이 우수한 설명] (https://www.atlassian.com/git/tutorials/undoing-changes/git-revert/)을 참조하십시오. – sjagr

+0

되돌리기가 완벽하게 작동했습니다. 답변으로 게시 할 수 있습니까? -Sanova가 언급했지만 rebase가 내가 찾고있는 것이 아닙니다. – Adrian

+0

기꺼이하게됩니다. – sjagr

답변

1

git revert 정확히 당신이 원하는 것을 달성하기위한 매우 간단한 도구입니다 사용합니다. This writeup is a nice explanation on how it works and how to use it 그러나 그것은 사용의 문제예요 : <commit>이 (가) ID를 커밋하거나 귀하의 경우, HEAD~1

git revert <commit> 

. 그런 다음

git revert HEAD~1 

단지 git push 변경하면 설정하고 : 결과 명령이 될 것입니다.

3

대화 형 Rebase 현재

$ git rebase -i HEAD~5 

를 얻을 수 및 HEAD ~ 5 수단은 대화 형 REBASE의 마지막 5 커밋을 포함한다.

프롬프트가 표시되면 제거하려는 커밋을 참조하는 줄을 삭제하고 저장하고 닫습니다.

그냥 지역 comits에 다시 가고 싶은 경우, 단지 git revert

+0

되돌리기는 내가 찾던 내용입니다. - 감사합니다. - @sjagr가 먼저 언급했습니다. 그래서 당신이 공평하게 굴면서 나는 그가 대답을 올리면 그의 대답을 받아 들일 것입니다. rebase는 실제로 필자가 피하려고했던 모든 코드를 수동으로 병합하도록 요구했을 것이다. (나는 다른 dev의 코드 변경을 되 돌리려고하고 정말로 변경된 것이 무엇인지에 대해 시간을 보내고 싶지 않다.) – Adrian

+1

아무런 문제없이, 다행이다. 그것을 전부 소트 시켰어. – Sanova

관련 문제