TurtoiseGit としましたが、大筋の考え方は TurtoiseSVN も同じです。
多人数で開発している場合、どうしても同じファイルを編集することはあります。
ある日、何気なしにコミット&プッシュすると、エラーが出てしまいました。(というストーリー)
英語のメッセージに従って、一旦プル(リポジトリから新しい情報を取り込む)します。
すると…。
出ました、競合エラー。
(左下のチェックを入れるとこのメッセージは出なくなりますが、問題解決にはならないので私は出すようにしています)
ファイルには競合を示す黄色い!マークが。この状態を解決しましょう。
競合したファイルの例
リポジトリ
using System; namespace userApplication { public class testClass { void Awake() { funcA(); } void Update() { } void funcA() { Debug.Log("functionA"); } } }
クローン
using System; namespace userApplication { public class testClass { void Awake() { funcB(); } void Update() { } void funcB() { Debug.Log("functionA"); } } }
解決方法
右クリック > TurtoiseGit > 競合の編集
左上がリポジトリ、右上がクローンです。
この2つをうまく抜き出して、下の「マージ済み」のコードを完成させます。
(普通にコピペしていきます)
修正が終わったら、マージ済みの方にある?????の行は消すようにしてください。
これを行わないと、完成されたと見なされません。
修正の仕方は状況次第ですが、今回は funcA -> funcB と順番通りにメソッドをコールすればいい、というシナリオです。
完成したら左上の「保存」ボタンを押します。
解決済みを選択
黄色の!から、いつもの赤の!に変化したのを確認してから、もう一度コミットを選びます。
ビビらせるようなメッセージに、思わず修正を咎められたような気分になりますが、問題はないのでOK。
競合について、メッセージに自動的に記載されています。
コミット&プッシュ。
自動生成されたメッセージをそのままにしていいですか? と聞かれます。
開発プロジェクトの統一ルールで、メッセージがこのままではまずい場合「中止」してメッセージを編集、問題なければ「無視」を押して構いません。
今度は無事コミット&プッシュに成功しました。