こちらは東京理科大学 Advent Calendar 2016の19日目の記事です。
今日はGitHub Desktopをつかった、比較的簡単(だと思われる)conflictの解消の仕方をかいていきます。
ターミナルとGitHub Desktopを混ぜて使っているのでこの通りにやると画面の切り替えが面倒かもしれません。
ターミナルに慣れたいけどgitはまだこわい初心者の人にはおすすめかな?
ちなみに、開発中にリモートのmasterがどんどん更新されていったときにその変更分を自分が作業しているbranchに取り込みたいと思った時は、手順の2と3を行えば取り込めます。
#GitHub Desktopとは
簡単にgitの基本操作を行えるツールです。
コードを変更した時に差分が簡単に見られたり、コードは元にもどさないまま1個前のcommitを簡単に取り消せたりするので便利です。
基本的な使い方はGitHub Desktopの使い方 - Qiitaが参考になります。
conflictの解消方法
1 gitHubでconflictしてるよ!と言われる
pushしてpull requestをだすとconflictしてるよといわれます。
2 localのmasterを更新
自分のbranchでcommitしていない変更があればしておきます。
そしてmaster branchに移動をします。
以下の$マークはターミナルでコマンドを打ったことを明示するためにつけているだけなので実際には打ちません。
$ git checkout master
そしてリモートから最新のmasterの情報を自分のmaster branchにもってきます。
$ git pull origin master
これでlocalのmaster branchが最新の状態になりました。
3 master branchの変更分をとりこもうとする
conflictしているbranchに移動をします。
そしてGitHub Desktopをみると左上のUpdate from masterボタンが押せるようになっているので押すと下のような画面になります。
conflictしていなければ、ボタンを押すことでmasterの変更分が取り込まれるcommitが問題なく生成されます。
4 conflict内容を確認し、変更
先ほどの画面が出たあとEditorを開くとconflictした部分が以下のように書き変わっています。
.container {
<<<<<<< HEAD
width: 30%;
||||||| merged common ancestors
width: 60%;
=======
width: 90%;
>>>>>>> master
margin: 0 auto;
}
これはどういうことかというと、
.container {
/// conflictしたbranchの変更分 ///
<<<<<<< HEAD
width: 30%;
/// おおもとのコード ///
||||||| merged common ancestors
width: 60%;
/// リモートの変更分 ///
=======
width: 90%;
>>>>>>> master
margin: 0 auto;
}
ということです。
これを見比べて、残しておくコードを決め、変更してcommitします。
今回は以下のようにコードを残しておくことにしました。
.container {
width: 30%;
margin: 0 auto;
}
5 commitする
最後にGitHub Desktopに戻ってcommitをします。
すると、masterの変更分が取り込まれてconflictが解消できます!
まとめ
これはconflict解消法の1例です。
慣れてきたらさらに早く解消できる方法を探してみてください。
東京理科大学 Advent Calendar 2016の19日目の記事でした。