8

公開されたコミットの履歴を書き換えることは悪いことであり、他の開発者のリポジトリを「壊す」ことになるとどこでも読みました。

しかし、正確に何が壊れ、どのように修正できるかについての詳細を見つけることができませんでした.

では、履歴と を書き換える場合git push --force、他の開発者が最新の情報を入手できるようにするにはどうすればよいでしょうか?

4

1 に答える 1

7

これはおそらく私が見た中で最も良い説明です: http://git-scm.com/book/ch3-6.html#The-Perils-of-Rebasing

簡単に言えば、他の開発者は変更されたパブリック リポジトリを取得し、必要に応じてそれらの変更を現在の作業にマージしようとするでしょう。最新の祖先が変更されている可能性が高いため、このマージは複雑になる可能性があり、手動で実行する必要がある場合があります。大まかな例は次のとおりです。

開発者 A はいくつかのコミットを行い、それらをサーバーにプッシュします。次に開発者 B は、それらのコミットをローカル ブランチ (または、場合によってはそれらのコミットの 1 つからのブランチ) にマージします。開発者 A は、古いコミットをリベースし、結果をサーバーにプッシュすることにしました。

これにより、開発者 B が使用していたサーバーからコミットが効果的に削除され、異なる識別子を持つほぼ同一のコミットに置き換えられます。

開発者 B がサーバーから再度プル ダウンした場合、リベース後のコミットを自分の作業にマージする必要があり、同じ変更を 2 回効果的にマージします。

開発者 A がリベース プロセスでコミットを削除または修正した場合、開発者 B は非常に複雑なマージを処理する必要があります。

于 2012-06-22T02:52:14.820 に答える