2011-07-30 3 views
4

나는 다음은 자식에 가능하면 알고 싶다 :git에서 주제 분기를 병합하여 모든 주제 분기의 커밋 기록을 제거 하시겠습니까?

한다고 가정 나는 다음과 같은 역사를 가지고 :

A---B---C---D---E master 
     \ 
      W---X---Y topic 

내가 다시 마스터 주제 지점에서 모든 변경 사항을 병합하고 싶습니다, 커밋 히스토리를 유지하지 않아도됩니다. , F 새가 W 커밋에서 변경에 해당 마스터 브랜치에 커밋이다

A---B---C---D---E---F master 

: 나는 다음과 같은 역사를 가지고 싶습니다

A---B---C---D---E---F master 
     \  /
      W---X---Y topic 

: 그 대신에,이다 X, Y을 한꺼번에 적용했습니다.

또한 그대로 토픽 브랜치를 유지할 수 있도록하고 싶습니다 :

A---B---C---D---E---F master 
     \   
      W---X---Y topic 

이 가능합니까? 나는 git rebase로 몇 가지 테스트를 해왔지만 지금까지는 필요한 방식으로 작동하지 않았다.

미리 감사드립니다.

답변

7

그것은 나쁜 비행선 제안하는 것보다 간단합니다,하지만이 시도하지 않은 : 그러나

$ git checkout master 
$ git merge --squash topic 
$ git commit *what has changed* 

, 내가 git help merge 권리를 이해할 때, 그것은 트릭을 할해야합니다.

+0

감사합니다! 이것은 나를 위해 속임수를했다. 나쁜 zeppelin과 antlersoft 덕분입니다. –

+0

오늘 나는 이것을 읽었다 : http://sandofsky.com/blog/git-workflow.html 보람있는 동행이 될 수있다. – Boldewyn

1

주제 분기의 사본을 작성하고 대화식으로 주제 분기의 커밋을 스 스로 징한 마스터 분기 (git rebase -i E)로 리베이스하고 마지막으로 작성한 주제 분기의 사본을 삭제하십시오. 이 후에는 원하는 것을 얻을 수 있어야합니다.

0

, 주제 오프 새로운 지점 (이것은 일회용입니다)

자식이 --interactive

(하나에 커밋 스쿼시) 마스터 리베이스 마스터에 그런

만들기 하나가 커밋 cherrypick 쓰레기 버리는 곳.

마스터에서 원하는 히스토리로 끝나고 주제 분기는 그대로 유지됩니다.

동일한 작업을 수행하는 더 간단한 방법이있을 수 있습니다 ...