同じプロジェクトで100人の開発者が働いているとします。gitはマスタ原点にプッシュするときにローカル更新/マージを強制しますか?
各開発者がチェンジセットを中央リポジトリ(元のマスタ)にプッシュすると、プッシュする前に強制的にローカルにプル/マージしてすべてのアップデートを取得しますか?
異なるファイルで作業していて、マージが不要な場合は、強制されません。
同じプロジェクトで100人の開発者が働いているとします。gitはマスタ原点にプッシュするときにローカル更新/マージを強制しますか?
各開発者がチェンジセットを中央リポジトリ(元のマスタ)にプッシュすると、プッシュする前に強制的にローカルにプル/マージしてすべてのアップデートを取得しますか?
異なるファイルで作業していて、マージが不要な場合は、強制されません。
プッシュは自動プルを行いません。多くの開発者は、単一の更新ブランチで作業している場合、彼らは常に
git pull --rebase && git push
短い答えを行うことはお勧めです:はい、彼らはフェッチされ、それらが推進している枝上の他の変更にマージを持っている必要があります。
長い答え:Gitが関係する限り、の履歴が変更されているため、ツリーはクライアント側でマージする必要があります。ありがたいことに、ほとんどの場合、これはgit pull
またはgit pull --rebase
という単純なもので、変更の内容とすべてがまだ機能しているかどうかを素早くチェックします。
あなたが記述したシナリオは許可されていません:gitリモートリポジトリは、が早送りされていないときに、ブランチへのプッシュを許可しません。。
ブランチb
にプッシュしたいとします。リモートはポイントr
にあります。デベロッパーはブランチb
からリモートb
へ、ポイントd
からHEADまでをコミットしようとしています。r
が厳密にd
に等しくない場合、このは機能しません。
これは設計によるものです。これを許可されていれば、コミットを失う可能性はもちろん、プロジェクトで作業する他の開発者のブランチをすべて破棄します。デベロッパーには、確かにローカルのreflogがありますが、まだまだです。
とは何ですか?何が起こるのですか?彼らは頭が背後にあるチェンジセットを押します、分裂は何ですか? – codecompleting
@codecompleting:プッシュは単に失敗します。その多くの開発者は、いくつかの分岐ワークフローが必要になることに注意してください。 –