2018.03.26
SourceTreeでコンフリクト対応の仕方
こんにちは、佐々木です。
SourceTreeを使っている方、コンフリクトエラーが発生したけれど、解決を押して解決したつもりになっていませんか?
もしくは、コンフリクト発生後にソースコードが壊れてしまったことありませんか?
意外におそろかにしてしまいがちなコンフリクト発生時の対応。
運用中、コンテンツ公開前にうっかりミスしてしまうと大変な問題につながってしまいます!
それでは、対応の仕方を見ていきましょう。
まず、なぜコンフリクトエラーが発生するのか
コンフリクトエラーが発生すると混乱してしまいがちですが、難しく考えることはありません、
原因としては、単純に考えると別の作業者と同じ新規・編集したファイルがあるのです。
(時には同じファイルを編集していても行数が違えば自動で吸収してくれることも)
コンフリクト時、ソースコードは下記のように、コンフリクトを示すコードが書き込まれてしまう。
test1 <<<<<<< HEAD test11 ======= test2 >>>>>>> 2edbe34e01095394db515369ba03137be2e291c8
SourceTreeではデフォルトでコンフリクトを解決するためのツールは組み込まれていない
コンフリクト発生時に、「解決済み」というメニューが現れます。実はこれはコンフリクトの解消を自分で終えた、ということです。
何も解消していないのにこのメニューを押してしまうと、コンフリクトを明示しているコード(<<<<<<< HEADなど)が書かれたまま、
コミット・プッシュしてしまうことになります!(汗
ただしくコンフリクトを解消する
コンフリクト解消には、手動でソースコードを書き換えて対応することも可能です。
ですが、ツールを利用するのが良いかと思いますので、「外部マージツールを起動」を選択しましょう。
で、一つ問題があります! 恐らく最初からマージツールは入っていませんので、自前でインストールしましょう。
WindowsはWinMergeがオススメです。
WinMegeのダウンロードはこちらから
MacだとP4Mergeなどが良いと思います。
P4Mergeのダウンロードはこちらから
マージツールの設定は「環境設定」の「Diff」の項目から行えます。
無事解決を行ったあとの様子。
※マージツールを終了しないとSourceTreeに反映されませんので注意してください。
あとはいつも通りコミット・プッシュするだけです。
もちろん手で衝突箇所を書き換えても同様にコンフリクトの解決ができます。
以上です。
いかがでしたでしょうか。
長くGitを使っている人でも、あまりコンフリクトに遭遇しないと、気づかずファイルを壊してしまっている可能性があります。
時には大惨事を招く可能性もありますので、コンフリクトには注意して対応をしましょう!
以上、佐々木でした。