Download - gitを使う準備をしよう - 中級編
![Page 1: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/1.jpg)
Code for KOSEN 勉強会 #4
を使う準備をしよう
2015.11.08 @yamasy1549
git中級編
![Page 2: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/2.jpg)
$ ブランチ
②push
③pull ⑤緑にした
⑥push
①赤にした ④pull ⑦青にした
こいつを
![Page 3: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/3.jpg)
$ ブランチ
こうじゃ
![Page 4: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/4.jpg)
$ ブランチ
ブランチ = 木の枝
たとえば新しい機能を追加したいとする。新しく書くコードにはバグがあるかも安全の保証されていないコードを本番環境にどんどん送るのはこわい今まさに動いてるサービスだったら…
![Page 5: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/5.jpg)
$ ブランチ
本番環境とは別の時間軸をつくって作業
完全に分離されているので、その中であれば失敗しても OK
機能ごとにブランチをつくって完成したら幹に統合すればすっきり
幹 枝
なかったコトに…
![Page 6: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/6.jpg)
$ ブランチ
慣習とか
・幹となるブランチの名前は「master」が多い
・ブランチをつくることを「切る」「生やす」という
・ブランチを master(本番のブランチ)に
統合することを「マージ」という
![Page 7: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/7.jpg)
$ ブランチ
①ブランチ切る
②作業 ③マージする
④めでたく統合
![Page 8: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/8.jpg)
$ ブランチ
①ブランチ切る
②作業\あれ、うまくいかない…/
\master じゃなくてよかった/
![Page 9: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/9.jpg)
$ ブランチ
①ブランチ切る
②作業\やっぱ仕様変更!/
\え、ちょっっっ/
![Page 10: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/10.jpg)
$ ブランチ
$ git branch
存在するブランチを一覧表示デフォルトでは master になってるよ!
![Page 11: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/11.jpg)
$ ブランチ
$ git checkout -b ブランチ名
$ git branch
新しくブランチを作成してそこに移動再度確認すると、ブランチが増えているはず
![Page 12: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/12.jpg)
$ ブランチ
$ git checkout 移動先のブランチ名
$ git branch -m 旧名 新名
「checkout」で他のブランチに移動できる名前の修正も可能
![Page 13: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/13.jpg)
$ git での開発 flow 基本形
「git 管理よろしくね」init
編集
add
commit
push
作業リポジトリでコードを書く
commit 待ちエリアに登録
変更をまとめる
共有リポジトリに送る
![Page 14: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/14.jpg)
$ git での開発 flow 復習
リポジトリ作る
ディレクトリを作る
「git 使います」宣言
基本形
最初のひと 2 番目以降のひと
もう作られてる
clone / pull する
もう使われてる
編集・add・commit・push
![Page 15: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/15.jpg)
$ git での開発 flow 復習
A さん
B さん
今までの例
①赤にした
②push
③pull ④緑にした
⑤push
![Page 16: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/16.jpg)
$ git での開発 flow 復習
A さん
B さん
①赤にした
②push
③pull ④緑にした
⑤push
push されるのを待たないと開発ができない?
![Page 17: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/17.jpg)
$ git での開発 flow 復習
A さん
B さん
①赤にした
②push
③pull ④緑にした
⑤push
そんなことはない!
![Page 18: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/18.jpg)
$ コンフリクト(競合)
A さん
B さん
②push
③pull ⑤緑にした
⑥push
①赤にした ④pull ⑦青にした
![Page 19: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/19.jpg)
$ コンフリクト(競合)
A さん
B さん
②push
③pull ⑤緑にした
⑥push
①赤にした ④pull ⑦青にした
clone-push 間に他の人の変更があると…><
![Page 20: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/20.jpg)
$ コンフリクト解消の流れ
pull
add
最新のファイルを手元に取り込む
競合したところがあれば修正
修正したファイルを add
rebase を続行する
修正
master(本番)ブランチに移動
開発ブランチに戻る
master の変更を開発ブランチに反映rebase
continue
![Page 21: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/21.jpg)
$ コンフリクト解消の流れ①②
pull
add
rebase
continue
$ git pull origin master
一番最後に push した人は手元の変更履歴と共有リポジトリの変更履歴が一致する。それ以外の人は手元の変更履歴と共有リポジトリの変更履歴の差分をみてgit が自動的に差分を取り込んでくれる。
コーチとペアになってやってみよう!①はじめに 2 人とも最新のファイルを手元に取り込む
![Page 22: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/22.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ①②
$ git checkout -b ブランチ名
$ git branch
新しくブランチを作成してそこに移動今いるブランチ名の横に「*」マークがつく
![Page 23: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/23.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ①②
$ vim index.html
$ git add index.html
$ git commit -m “message”
タイトルを書き換えてみよう!(<title></title> で囲まれた中の文字)
![Page 24: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/24.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ①
$ git push origin ブランチ名
②まず 1 人目だけが push する
master
1 人目のブランチ
![Page 25: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/25.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ①
③Pull request を書いて 1 人目のブランチを master にマージする
Pull request・ぷるりく・このブランチではこんな変更を行いました!・これを(別の任意のブランチに)マージしてほしいから ちょっとコード見て確認してもらえますか?
などを書いて他の人にお知らせできる機能
![Page 26: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/26.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ①
③Pull request を書いて 1 人目のブランチを master にマージする
Pull req のタイトルと本文を記入して「Create pull request」で送信
・本文には、どういった変更を加えたのか書く・見た目を変更したなら、スクショとか貼れると good・開発中気になったことがあればそれも
![Page 27: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/27.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ①
③Pull request を書いて 1 人目のブランチを master にマージする
master
1 人目のブランチ
2 人目の人は、コードを見てよさそうなら「Merge pull request」を押してマージしてあげよう!
![Page 28: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/28.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git push origin ブランチ名
④次に 2 人目が push する
master
2 人目のブランチ
![Page 29: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/29.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
⑤Pull request を書いて 2 人目のブランチを master にマージする
master
2 人目のブランチ
![Page 30: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/30.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
2 人目のブランチには が含まれていないのでうまく master とマージできない…
master
2 人目のブランチ
![Page 31: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/31.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git checkout master
ブランチを master に移動
![Page 32: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/32.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git checkout master
$ git pull origin master
GitHub の master にある最新のファイルを手元の master ブランチに取り込む
![Page 33: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/33.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git checkout ブランチ名
自分の作業ブランチに戻る
![Page 34: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/34.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git checkout ブランチ名
$ git rebase master
作業ブランチの変更を守りつつ、master ブランチの変更を取り込んでくれる
![Page 35: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/35.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
master
2 人目のブランチ
![Page 36: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/36.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
master
2 人目のブランチ
![Page 37: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/37.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
・・CONFLICT (content): Merge conflict in index.htmlWhen you have resolved this problem run "git rebase --continue".If you would prefer to skip this patch, instead run "git rebase --skip".To restore the original branch and stop rebasing run "git rebase --abort".
![Page 38: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/38.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<<<<<<< HEAD
<title> ごちうさ </title>
=======
<title> あいまいみー </title>
>>>>>>> commit タイトルをあいまいみーに変更
</head>
・
・ Git が、どっちを優先すればいいかわからなかった
![Page 39: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/39.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title> あいまいみー </title>
</head>
・
・
master 側(HEAD)と自分の変更点を比べて、必要ない部分を削除していく
![Page 40: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/40.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git add index.html
変更したファイルを add する(commit はしない!)
![Page 41: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/41.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git rebase --continue
rebase を続けるまだコンフリクトしてるとこがあれば出てくる
![Page 42: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/42.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git push -f origin ブランチ名
再 push歴史を書き換えたので、強制 push(-f)
![Page 43: gitを使う準備をしよう - 中級編](https://reader031.vdocuments.mx/reader031/viewer/2022020301/5877ec041a28ab20088b61c9/html5/thumbnails/43.jpg)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
今度は「Merge pull request」が押せるはず!
master
2 人目のブランチ