1

ローカルの変更をリモートリポジトリにプッシュする直前に、gitは常にローカルブランチをリモートブランチと同期するように要求します。そのためには、最初にgit pullを実行し、次にプルされた変更をコミットして、最後にプッシュします。

このアプローチの問題は、gitがプルインされたファイルを既存の変更とマージし、将来、その特定のコミットで何をしたかを理解しようとすると、何をしたかとプルがマージしたかを明確に区別できないことです。

クリーンな履歴が欲しいのですが、つまり、コミットには常に、追加した変更のみを表示/表示する必要がありますが、プルによってマージされた変更は表示されません。

私が考えることができるこの問題の1つの解決策は、特定のリモートブランチに2つのローカルブランチを用意することです。(1)変更の場合、(2)リモートと同期する場合、およびプッシュする必要がある場合は、最初に(2)をリモートと同期してから、(1)を(2)とマージしてから、(2)からプッシュします。

きれいな歴史を持つ方法に関する他の提案はありますか?

4

1 に答える 1

3

リモートリポジトリ(ローカルコミット)にプッシュする前に、次のことを行う必要があります

git fetch origin

リポジトリに加えられたすべての変更をフェッチします(originは単なる名前の例です)。その後、

git rebase origin/remote-branch

オリジン/リモートブランチのブランチの上にローカルブランチをリベースするため。

ファイルがローカルとリポジトリの両方で変更された場合は、ここでマージの問題を修正する必要があります。rebaseスムーズに終了したら、プッシュする準備ができています。

git push origin local-branch

これにより、クリーンなストレートgitブランチが維持されます。

于 2013-03-04T19:09:13.297 に答える