2014-10-07 2 views
2

분기에 수행 된 모든 병합을 제거하려면 어떻게합니까? 그리고 나는 하나의 병합을 되 돌리려는 것이 아닙니다.다른 분기에서 수행 된 모든 커밋/병합을 제거합니다.

자세한 내용을 보려면 나는 매우 밀접하게 관련된 두 개의 별개의 가지에서 일하고 있었다. "도구"와 "기능"을 연결하십시오. 지점 "기능"은 지점 "도구"의 특정 도구를 사용했습니다. 그래서 프로젝트의 수명을 통해 "tools"브랜치의 업데이트를 "feature"브랜치로 병합했습니다. (반대로 절대)

기능이 거의 개발 단계에 가까워지면서 앞으로 출시 될 기능으로 독립 실행 형으로 설정하기로했습니다. "도구"는 아직 발표되지 않았기 때문에 "도구"가없는 "기능"코드를 사용했습니다. 그러나 "도구"는 여전히 "기능"에 있습니다. 어떻게 "Tools"브랜치에서 작성한 모든 커밋이나 병합을 제거 할 수 있습니까?

나는 git-rebase -i라고 생각하고 있었지만 변경된 사항에 대해 충분한 세부 사항없이 제거하려면 지나치게 많은 커밋이 필요합니다. 이것을 할 또 다른 방법이 있습니까?

--->Master--\ #Feature Branch Created from Master, and Master merged into Tools. 
      \ 
--->--->Tools \---------\------\------\-------\---->---------> 
         \  \  \  \ 
     Feature |---------\------\------\-------\--->[Finished] 

그래서 B = 기능-분기 및 A = 도구-지점 자식 REBASE (B-A)가 어떤 도움 apprciated 될 경우처럼이 할 수있는 방법이 있나요. 고맙습니다!

+0

병합 커밋을 제거하면 다른 커밋이 '기능적'상태로 남아있게됩니까? 도구에 대한 의존성을 제거하기 전에 말입니다. '예'라면, 기본적으로'git rebase'를 사용하여 모든 병합을 버릴 ​​수 있다고 생각합니다. –

답변

1

당신은 두 단계로이 작업을 수행해야합니다, 지점 마스터에

  • git cherry-pick <list of commits in tools that you actually need>
  • git rebase --onto master tools feature (이 지점 feature에서 남아있는 모든 tools 커밋을 삭제하고 대신 master의 버전을 사용합니다)

정말 필요한 것을 추측 할 가능성이 있으므로 git reflog--abort 플래그를 잘 알고 있어야합니다. 대부분의 지점 관리 명령에 적용됩니다.

+0

rebase를하기 위해 잠시 시간을 보냈지 만, 내가 필요한 지점으로 가야했습니다. :) 감사! – Baconbitz

관련 문제