2017-04-26 13 views
0

私はgit bookの基本を読んで、枝の赤色を線形化しようとしています。履歴を簡単に見直すために、ブランチと分岐点が1つしかありません。どのような選択肢があり、何がベストですか?Gitで "splintered"マージ履歴を線形化する方法は?

This答えがreset --softに示唆されていますが、ここではデモはマージ以来大きくなったと想定しています。 ブランチをafの前、または好ましくは9cのコミットの前に、赤に追加するようにしても構いません。 ; あなたが(事実、いくつかのコミットを削除) "後方" REFを移動頼む何をして、すべての方法 -

* 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が前の質問に対する妥当な回答であった場合、ここでも同様です。

git checkout 5356e62 
git reset --soft 9cc3291 

ので

git commit 

新しいコミット一つに「スカッシュ」古いコミットをしていることを作成し、変更を上演ようになりました1d7f531からのすべての変更は、以降表示されます。

この時点で、96575dcを指すブランチがある場合は、結合解除されているように見えます。 OTOH以前は、親ブランチが96575dcに到達できる唯一のブランチだった場合、96575dcに到達できませんでした。関連する変更が新しいコミットに含まれているため、詳細な履歴が必要ない場合はOKです。

幾分より一般的な解決策は、merge --squashであり、さらにより一般的なrebase --interactive

あろう
関連する問題