最近、SVN -> Git (Stash を使用) から移行しました。移行後、一部の開発者が機能ブランチでマージを台無しにしているマージ中に問題が発生し始めました。
**Our workflow model:-**
master 1---2----3------------4----5
| | | | | |
| | M | | |
feature1 | a--------b--- | |
| M |
feature2 c-----------------d-------
上の図では、developer1 がフィーチャー ブランチ feature1 を持っており、変更を行い、develop にマージしたとします。
Developer2 には、developer1 のブランチの前に作成されたブランチがありますが、それよりも長く存在する予定です。変更が完了すると、 master から自分の branch に変更を取り込み、競合を解決してからマージします。
問題は、developer2 が変更を自分のローカル ブランチにマージするときに、自分のファイルを優先してマージの競合を解決していることです。ただし、これは実際に は、彼が変更していないファイルの一部を上書きしています。プル リクエストを作成して master にマージすると、developer1 の変更が以前のバージョンに効果的にロールバックされます。ファイルは実際に以前のコミット (SHA) ID にロールバックされるため、これを実行できます。
質問は、
- これを体系的に回避できる方法はありますか。つまり、変更 SHA ID が実際にはロールバックである master への変更を拒否するように git に依頼します。
- マージ中に開発者が変更したファイルのみで競合が発生する方法はありますか
グーグルで調べたところ、 --rebase オプションを指定して git pull を実行するか、 master ブランチの権限を変更して早送りマージのみを許可することを提案する記事にたどり着きました。どちらのオプションも役立ちます。