レポがどのように見えるかは正確にはわかりませんが、最悪のシナリオは次のとおりです。
origin
リポジトリが次のようになっているとします
元:
o---o---A---B---Cマスター
ローカル リポジトリは次のようになります。
ジムパルス:
o---o---A---B---C マスター、オリジン/マスター
\
D---E---F トピック1
次に、ブランチの名前を変更すると、ローカル リポジトリは次のようになります。
ジムパルス:
o---o---A---B---C old_master, origin/master
\
D---E---Fマスター
これでプッシュmaster
するorigin
と、早送りではない更新になります。プッシュ後、origin
リポジトリは次のようになります。
元:
o---o---A...B...C (B & C は孤立したコミットです)
\
D---E---Fマスター
これは、上でコミットを行った可能性のある友人にとっては残酷なことですC
。たとえば、Sally があなたと一緒に作業していた場合、彼女のリポジトリは次のようになります。
サリー:
o---o---A---B---C オリジン/マスター
\
G---H---マスター
ここで、非早送りプッシュを実行し、サリーがfetch
彼女のリポジトリを実行すると、次のようになります。
サリー:
D---E---Fオリジン/マスター
/
o---o---A---B---C
\
G---H---マスター
ここで、サリーは自分の作業 (G、H、I) をリポジトリに戻す方法を見つけなければなりません。彼女が単純にマージするとorigin/master
、B と C の変更がリポジトリに戻されます (おっと!)。代わりに、彼女はする必要があるcherry-pick
かrebase
、彼女の GHI が に変わりますorigin/master
。
Git でそれができるのは素晴らしいことですが、それは一種の面倒なことです。サリーが状況に気付くことを本当に望んでいます。これが、変更を適切に処理できるように、これを行うときに他のすべての貢献者に警告する必要がある理由です。
注:上記は最悪のシナリオです。ブランチがCtopic1
から出発した場合、その変更は早送りであり、問題はありません。master