したがって、次のことが起こると想像してください(そして、すべてSourceTreeを使用している)。
- 私たちはすべてorigin / developに取り組んでいます。
- 私は一週間休みに行きます。
- 私の同僚は、過去数日間、起源/開発を自分のローカル開発ブランチにマージせずにローカルで作業しています。
- 彼はプッシュを試み、最初にマージする必要があると言われ、次にプルを行います。
- 彼は競合を取得し、マージ後の自動コミットの進行を停止します。
- GitがSVNに似ていると仮定すると、私の同僚は作業コピーの「新しい」ファイルを破棄してから、マージをコミットします。これらの「新しい」ファイルを発信元/開発者のヘッドから消去します。
- その改訂に加えて、数週間分の開発作業が行われます。
- 私は休日から戻ってきて、私の仕事の数日間が不足していることがわかります。
私たちはすべてGitに非常に新しい(これを使用する最初のプロジェクトです)が、それを修正するために私がしたことは:
- 「develop」の名前を「develop_old」に変更します。
- developer_oldを新しいブランチ「develop_new」にマージします。
- 不良マージの前の最後のコミットに、develop_newブランチをリセットします。
- Cherryはそれ以降、各コミットを1つずつ選択し、手作業で競合を解決します。
- 開発元と開発元をプッシュします。
この時点で、develop_newは、すべての変更の「良い」コピーであり、その後の数週間分の作業が再適用されることを望んでいます。私はまた、「逆コミット」がマージで奇妙なことをすることを想定しています。特に今後数週間の作業はそれに基づいているためです-そして、そのマージには私たちがしたいものと一緒に欲しいものがたくさん含まれているのでt。
私はこれが二度と起こらないことを望んでいますが、もし二度と起これば、私は物事を修正するより簡単/より良い方法を知りたいです。そのマージに基づいてレポで多くの作業が行われたときに、「悪い」マージを元に戻すより良い方法はありますか?
git log
形式の出力を、さまざまなコミットで何が起こったのかについての適切な注釈とともに投稿できますか?(私は/注釈を墨消したいgit log --graph --pretty=oneline --abbrev-commit
、そこから行く)