別の質問でこのブログにリンクされていて、特定の git ワークフローに関する次の警告を読みました。
膨大な量の髪を引っ張る実際のシナリオは次のとおりです。
- チームはマージ ワークフローを使用していました。物事を急速に変化させている人はたくさんいます。典型的なスタイルだった
- 自分のものに取り組む
- ローカルにコミットする
- git pull と競合がないことを願っています
- 他の誰かがそこに入る前に、できるだけ早く git push してください
- チーム メンバーの多くは、問題なく動作する Tortoise Git を使用していましたが、Git と Subversion の根本的な違いを理解せずに Tortoise SVN から移行していました。
- 非常に多くの人が非常に多くのことを行っていたため、マージの競合がかなり頻繁に発生しました
- Tortoise Git の 1 人のユーザーは、pull を実行し、マージの競合が発生し、マージの競合を解決してから、結果をコミットするときにコミットするファイルのリストを注意深く調べます。そこにはたくさんのファイルがあり、彼は、マージの競合がいくつかのファイルにしか関係していないことを知っていました。彼のコミットでは、彼が関与していない他のすべてのファイルの変更のチェックを外し、結果をコミットしてコミットをプッシュしました。
- 結果:このユーザーの前回のコミットと今回のコミットの間に行われた、他のユーザーによるすべてのコミットは破棄されました。
どうやってこれが起こるのか理解できませんか?すなわち:
- どのようにして「間違った」状態を押し進めることができますか? 私が理解していると思ったので、これには が必要です
--force
が、ここでの話はこれがオフになっているということです。pull
ユーザーは、競合修正のコミットとプッシュの間に必要ではないでしょうか? - ここで破棄されたということは、私が考えていることを意味しているのでしょうか? それらが「削除」されるとは信じがたいですが、実際の結果は、元に戻されているようなものだと思いますか?