2017-04-26 7 views
0

나는 브랜치 블루가 병합 된 지점에서 빨간색을 선형화하려고 시도하는 git book의 기본 사항을 읽었습니다. 역사를 더 쉽게 검토하기 위해 하나의 가지만 있고 교차점을 가지지 않으려 고 노력합니다. 어떤 옵션을 사용해야하고 가장 좋은 것이 있습니까?Git에서 "splintered"병합 이력을 선형화하는 방법은 무엇입니까?

This 답변은 reset --soft으로 제안하지만 여기서는 데모가 병합 이후로 많이 증가했다고 가정합니다. af 전에 또는 바람직하게는 9c이 커밋되기 전에 브랜치 변경 사항을 빨간색으로 추가하는 것이 좋습니다. ; 당신이 (효과적으로 어떤 커밋을 제거) "뒤로"는 심판 이동 요청하는 일의 모든 방법 -

* 5356e62 vimdiff solved 
* c1ccf86 red forward 
* 51fbd33 Merge branch 'blue' into red 
|\ 
| * 96575dc new file 
| * 1d7f531 some line and blue branch 3 
* | 9cc3291 new file 
* | 92569c6 another commit 
* | f8d3ab2 blue branch 3 
|/ 
* af8b651 init 

답변

0

주의 할 이러한 커밋이 다른 개발자와 공유되면 문제가 발생합니다. 업스트림 리베이스에서 복구하는 것과 관련하여 git rebase 문서를 참조하고 리베이스의 관점에서 문서화되었지만 모든 히스토리 편집에 적용됨을 이해하십시오.

git reset --soft이 앞의 질문에 대한 합리적인 대답이었던만큼 여기서도 똑같이 합리적입니다. 1d7f531에서

git checkout 5356e62 
git reset --soft 9cc3291 

지금 모든 변경 사항은 이후 새로운 "는 과즙이"옛 하나로 커밋 커밋 만들기 때문에

git commit 

변경을 무대로 나타납니다.

분기가 96575dc 인 경우이 분기가 병합 된 것처럼 보일 것입니다. OTOH 이전에 상위 분기가 96575dc에 도달 할 수있는 유일한 분기 였으면 이제 96575dc에 도달 할 수 없습니다. 관련된 변경 사항이 새 커밋에 있기 때문에 자세한 기록을 원하지 않는다면 괜찮습니다.

다소 더 일반적인 솔루션은 merge --squash이며,보다 일반적으로는 될 것 rebase --interactive