1. risagon

    Posted

    risagon
Changes in title
+conflictしたときにGitHub Desktopをつかって解決!
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,101 @@
+こちらは[東京理科大学 Advent Calender 2016](http://qiita.com/advent-calendar/2016/tokyo_university_of_science)の19日目の記事です。
+
+今日はGitHub Desktopをつかった、比較的簡単(だと思われる)conflictの解消の仕方をかいていきます。
+ターミナルとGitHub Desktopを混ぜて使っているのでこの通りにやると画面の切り替えが面倒かもしれません。
+ターミナルに慣れたいけどgitはまだこわい初心者の人にはおすすめかな?
+ちなみに、開発中にリモートのmasterがどんどん更新されていったときにその変更分を自分が作業しているbranchに取り込みたいと思った時は、手順の2と3を行えば取り込めます。
+
+#GitHub Desktopとは
+簡単にgitの基本操作を行えるツールです。
+コードを変更した時に差分が簡単に見られたり、コードは元にもどさないまま1個前のcommitを簡単に取り消せたりするので便利です。
+基本的な使い方は[GitHub Desktopの使い方 - Qiita](http://qiita.com/yukiyan/items/2ea3dc5813fdba5d9cd2)が参考になります。
+
+# conflictの解消方法
+## 1 gitHubでconflictしてるよ!と言われる
+pushしてpull requestをだすとconflictしてるよといわれます。
+![conflict](https://qiita-image-store.s3.amazonaws.com/0/141150/15f98a9e-c927-ecdf-d0a6-9e003bc332ff.png)
+
+
+## 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が問題なく生成されます。
+![GitHub Desktop1](https://qiita-image-store.s3.amazonaws.com/0/141150/c112ddcf-f56f-b663-797a-59113a7e9888.png)
+
+## 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をします。
+
+![GitHub Desktop2](https://qiita-image-store.s3.amazonaws.com/0/141150/c52a0e7f-b7c1-551b-a60e-060fe73584cf.png)
+すると、masterの変更分が取り込まれてconflictが解消できます!
+
+# まとめ
+これはconflict解消法の1例です。
+慣れてきたらさらに早く解消できる方法を探してみてください。
+
+[東京理科大学 Advent Calender 2016](http://qiita.com/advent-calendar/2016/tokyo_university_of_science)の19日目の記事でした。