SlideShare a Scribd company logo
Code for KOSEN 勉強会 #4
を使う準備をしよう
2015.11.08 @yamasy1549
git 中級編
$ ブランチ
②push
③pull ⑤緑にした
⑥push
①赤にした ④pull ⑦青にした
こいつを
$ ブランチ
こうじゃ
$ ブランチ
ブランチ = 木の枝
たとえば新しい機能を追加したいとする。
新しく書くコードにはバグがあるかも
安全の保証されていないコードを
本番環境にどんどん送るのはこわい
今まさに動いてるサービスだったら…
$ ブランチ
本番環境とは別の時間軸をつくって作業
完全に分離されているので、
その中であれば失敗しても OK
機能ごとにブランチをつくって
完成したら幹に統合すればすっきり
幹 枝
なかったコトに…
$ ブランチ
慣習とか
・幹となるブランチの名前は「master」が多い
・ブランチをつくることを「切る」「生やす」という
・ブランチを master(本番のブランチ)に
 統合することを「マージ」という
$ ブランチ
①ブランチ切る
②作業 ③マージする
④めでたく統合
$ ブランチ
①ブランチ切る
②作業\あれ、うまくいかない…/
\master じゃなくてよかった/
$ ブランチ
①ブランチ切る
②作業
\やっぱ仕様変更!/
\え、ちょっっっ/
$ ブランチ
$ git branch
存在するブランチを一覧表示
デフォルトでは master になってるよ!
$ ブランチ
$ git checkout -b ブランチ名
$ git branch
新しくブランチを作成してそこに移動
再度確認すると、ブランチが増えているはず
$ ブランチ
$ git checkout 移動先のブランチ名
$ git branch -m 旧名 新名
「checkout」で他のブランチに移動できる
名前の修正も可能
$ git での開発 flow 基本形
「git 管理よろしくね」init
編集
add
commit
push
作業リポジトリでコードを書く
commit 待ちエリアに登録
変更をまとめる
共有リポジトリに送る
$ git での開発 flow 復習
リポジトリ作る
ディレクトリを作る
「git 使います」宣言
基本形
最初のひと 2 番目以降のひと
もう作られてる
clone / pull する
もう使われてる

編集・add・commit・push

$ git での開発 flow 復習

A さん

B さん
今までの例
①赤にした
②push
③pull ④緑にした
⑤push
$ git での開発 flow 復習

A さん

B さん
①赤にした
②push
③pull ④緑にした
⑤push
push されるのを待たないと開発ができない?
$ git での開発 flow 復習

A さん

B さん
①赤にした
②push
③pull ④緑にした
⑤push
そんなことはない!
$ コンフリクト(競合)

A さん

B さん
②push
③pull ⑤緑にした
⑥push
①赤にした ④pull ⑦青にした
$ コンフリクト(競合)

A さん

B さん
②push
③pull ⑤緑にした
⑥push
①赤にした ④pull ⑦青にした
clone-push 間に他の人の変更があると…><
$ コンフリクト解消の流れ
pull
add
最新のファイルを手元に取り込む
競合したところがあれば修正
修正したファイルを add
rebase を続行する
修正
master(本番)ブランチに移動
開発ブランチに戻る
master の変更を開発ブランチに反映rebase
continue
$ コンフリクト解消の流れ①②
pull
add
rebase
continue
$ git pull origin master
一番最後に push した人は
手元の変更履歴と共有リポジトリの変更履歴が一致する。
それ以外の人は
手元の変更履歴と共有リポジトリの変更履歴の差分をみて
git が自動的に差分を取り込んでくれる。
コーチとペアになってやってみよう!
①はじめに 2 人とも最新のファイルを手元に取り込む

pull
add
rebase
continue
$ コンフリクト解消の流れ①②
$ git checkout -b ブランチ名
$ git branch
新しくブランチを作成してそこに移動
今いるブランチ名の横に「*」マークがつく
pull
add
rebase
continue
$ コンフリクト解消の流れ①②
$ vim index.html
$ git add index.html
$ git commit -m“message”
タイトルを書き換えてみよう!
(<title></title> で囲まれた中の文字)
pull
add
rebase
continue
$ コンフリクト解消の流れ①
$ git push origin ブランチ名
②まず 1 人目だけが push する
master
1 人目のブランチ
pull
add
rebase
continue
$ コンフリクト解消の流れ①
③Pull request を書いて
 1 人目のブランチを master にマージする
Pull request・ぷるりく
・このブランチではこんな変更を行いました!
・これを(別の任意のブランチに)マージしてほしいから
 ちょっとコード見て確認してもらえますか?
などを書いて他の人にお知らせできる機能
pull
add
rebase
continue
$ コンフリクト解消の流れ①
③Pull request を書いて
 1 人目のブランチを master にマージする
Pull req のタイトルと本文を記入して
「Create pull request」で送信
・本文には、どういった変更を加えたのか書く
・見た目を変更したなら、スクショとか貼れると good
・開発中気になったことがあればそれも
pull
add
rebase
continue
$ コンフリクト解消の流れ①
③Pull request を書いて
 1 人目のブランチを master にマージする
master
1 人目のブランチ
2 人目の人は、コードを見てよさそうなら
「Merge pull request」を押してマージしてあげよう!
pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git push origin ブランチ名
④次に 2 人目が push する
master
2 人目のブランチ
pull
add
rebase
continue
$ コンフリクト解消の流れ②
⑤Pull request を書いて
 2 人目のブランチを master にマージする
master
2 人目のブランチ
pull
add
rebase
continue
$ コンフリクト解消の流れ②
2 人目のブランチには   が含まれていないので
うまく master とマージできない…
master
2 人目のブランチ
pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git checkout master
ブランチを master に移動

pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git checkout master
$ git pull origin master
GitHub の master にある最新のファイルを
手元の master ブランチに取り込む

pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git checkout ブランチ名
自分の作業ブランチに戻る

pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git checkout ブランチ名
$ git rebase master
作業ブランチの変更を守りつつ、
master ブランチの変更を取り込んでくれる

pull
add
rebase
continue
$ コンフリクト解消の流れ②
master
2 人目のブランチ
pull
add
rebase
continue
$ コンフリクト解消の流れ②
master
2 人目のブランチ
pull
add
rebase
continue
$ コンフリクト解消の流れ②

・
・
CONFLICT (content): Merge conflict in index.html
When 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".
pull
add
rebase
continue
$ コンフリクト解消の流れ②

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<<<<<<< HEAD
<title> ごちうさ </title>
=======
<title> あいまいみー </title>
>>>>>>> commit タイトルをあいまいみーに変更
</head>
・
・ Git が、どっちを優先すればいいかわからなかった
pull
add
rebase
continue
$ コンフリクト解消の流れ②

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title> あいまいみー </title>
</head>
・
・
master 側(HEAD)と自分の変更点を比べて、
必要ない部分を削除していく
pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git add index.html
変更したファイルを add する
(commit はしない!)

pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git rebase --continue
rebase を続ける
まだコンフリクトしてるとこがあれば出てくる

pull
add
rebase
continue
$ コンフリクト解消の流れ②
$ git push -f origin ブランチ名
再 push
歴史を書き換えたので、強制 push(-f)
pull
add
rebase
continue
$ コンフリクト解消の流れ②
今度は「Merge pull request」が押せるはず!
master
2 人目のブランチ

More Related Content

PDF
JDLA主催「CVPR2023技術報告会」発表資料
PPTX
[DL輪読会]Graph R-CNN for Scene Graph Generation
PDF
物理ベースレンダラedupt解説
PDF
汎用ニューラルネットワークポテンシャル「PFP」による材料探索_MRS-J2021招待講演_2021/12/15
PDF
(2020.10) 分子のグラフ表現と機械学習: Graph Neural Networks (GNNs) とは?
PPTX
Efficient Neural Architecture Search via Parameters Sharing @ ICML2018読み会
PPTX
Georgia O'Keeffe Watercolors
PPTX
[DL輪読会]Learning convolutional neural networks for graphs
JDLA主催「CVPR2023技術報告会」発表資料
[DL輪読会]Graph R-CNN for Scene Graph Generation
物理ベースレンダラedupt解説
汎用ニューラルネットワークポテンシャル「PFP」による材料探索_MRS-J2021招待講演_2021/12/15
(2020.10) 分子のグラフ表現と機械学習: Graph Neural Networks (GNNs) とは?
Efficient Neural Architecture Search via Parameters Sharing @ ICML2018読み会
Georgia O'Keeffe Watercolors
[DL輪読会]Learning convolutional neural networks for graphs

What's hot (20)

PDF
Bayesian Neural Networks : Survey
PDF
Sliced Wasserstein Distance for Learning Gaussian Mixture Models
PPTX
Deep Fakes Detection
PPTX
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
PDF
日本一やさしい マテリアルズ・インフォマティクスへの導き_柴田_nanotech2023
PDF
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
PDF
[Track2-5] CPUだけでAIをやり切った最近のお客様事例 と インテルの先進的な取り組み
PPTX
Variational autoencoder
PDF
Supervised PCAとその周辺
PDF
Neural networks for Graph Data NeurIPS2018読み会@PFN
PDF
Generative Models(メタサーベイ )
PPTX
[DL輪読会]Encoder-Decoder with Atrous Separable Convolution for Semantic Image S...
PPTX
第35回 強化学習勉強会・論文紹介 [Lantao Yu : 2016]
PPTX
画像認識と深層学習
PPTX
[DL輪読会]モデルベース強化学習とEnergy Based Model
PDF
【論文読み会】Self-Attention Generative Adversarial Networks
PDF
Domain Adaptation 発展と動向まとめ(サーベイ資料)
PDF
[CB16] Cyber Grand Challenge (CGC) : 世界初のマシン同士の全自動ハッキングトーナメント by Tyler Nighsw...
PPTX
[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images
PPTX
[解説スライド] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
Bayesian Neural Networks : Survey
Sliced Wasserstein Distance for Learning Gaussian Mixture Models
Deep Fakes Detection
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
日本一やさしい マテリアルズ・インフォマティクスへの導き_柴田_nanotech2023
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
[Track2-5] CPUだけでAIをやり切った最近のお客様事例 と インテルの先進的な取り組み
Variational autoencoder
Supervised PCAとその周辺
Neural networks for Graph Data NeurIPS2018読み会@PFN
Generative Models(メタサーベイ )
[DL輪読会]Encoder-Decoder with Atrous Separable Convolution for Semantic Image S...
第35回 強化学習勉強会・論文紹介 [Lantao Yu : 2016]
画像認識と深層学習
[DL輪読会]モデルベース強化学習とEnergy Based Model
【論文読み会】Self-Attention Generative Adversarial Networks
Domain Adaptation 発展と動向まとめ(サーベイ資料)
[CB16] Cyber Grand Challenge (CGC) : 世界初のマシン同士の全自動ハッキングトーナメント by Tyler Nighsw...
[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images
[解説スライド] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
Ad

Viewers also liked (6)

PPTX
Gitの使い方(rabese -i編)
PPTX
Git rebase
PPTX
rebaseにまつわる3つの誤解
PPT
SVN経験者のためのGIT入門
PPTX
Git, Github超入門
PPT
会社紹介スライド Lineked in
Gitの使い方(rabese -i編)
Git rebase
rebaseにまつわる3つの誤解
SVN経験者のためのGIT入門
Git, Github超入門
会社紹介スライド Lineked in
Ad

Similar to gitを使う準備をしよう - 中級編 (6)

PDF
バージョン管理
PDF
Let’s translate FuelPHP docs!
PDF
Let’s translate FuelPHP docs! [RELOADED]
PDF
gitを使う準備をしよう - 初級編
PDF
Fission で 始める Containerless Kubernetes #serverlesstokyo
PDF
Wantedly - 世界一"いいね!"される 求人サイトの作り方
バージョン管理
Let’s translate FuelPHP docs!
Let’s translate FuelPHP docs! [RELOADED]
gitを使う準備をしよう - 初級編
Fission で 始める Containerless Kubernetes #serverlesstokyo
Wantedly - 世界一"いいね!"される 求人サイトの作り方

More from Sanae Yamashita (20)

PDF
vivliostyle.orgではじめるCSS組版チュートリアル
PDF
Vivliostyle Theme 開発ガイドラインの公開
PDF
Vivliostyle Themes のハンズオン
PDF
スピーディーな本作りとカスタマイズ可能な本作りのための Vivliostyle Themes プロジェクト #vivliostyle
PDF
CSS組版やってみた! #Vivliostyle
PDF
読解・QRコード(かんたんなやつ) #nitaclt
PDF
きみはPNGの仕様書を読んだか?
PDF
UIデザインの心理学
PDF
軍歌でわかるドイツ語(わからない)
PDF
この夏、絶対モテるフォント選びのコツ #nitaclt
PDF
Hello world! にときめかなかった僕が情報系を名乗るまで
PDF
おいしい!GitHub ~GitHub Patchwork Tokyo @dots 夏休み版~
PDF
『UIデザインの心理学』周辺視野 - #kosen14s 第1回読書会 Day4 -
PDF
Are you a Designer or an Engineer?
PDF
Me and GitHub
PDF
CSSをさわってみよう
PDF
HTMLをさわってみよう
PDF
企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそう
PDF
Rubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたい
PDF
git-followup @明石高専2E
vivliostyle.orgではじめるCSS組版チュートリアル
Vivliostyle Theme 開発ガイドラインの公開
Vivliostyle Themes のハンズオン
スピーディーな本作りとカスタマイズ可能な本作りのための Vivliostyle Themes プロジェクト #vivliostyle
CSS組版やってみた! #Vivliostyle
読解・QRコード(かんたんなやつ) #nitaclt
きみはPNGの仕様書を読んだか?
UIデザインの心理学
軍歌でわかるドイツ語(わからない)
この夏、絶対モテるフォント選びのコツ #nitaclt
Hello world! にときめかなかった僕が情報系を名乗るまで
おいしい!GitHub ~GitHub Patchwork Tokyo @dots 夏休み版~
『UIデザインの心理学』周辺視野 - #kosen14s 第1回読書会 Day4 -
Are you a Designer or an Engineer?
Me and GitHub
CSSをさわってみよう
HTMLをさわってみよう
企業ロゴに学ぶ 頭を使わないスライド作り 色で悩む時間を減らそう
Rubotyに名前をつけて可愛がってかしこく育てて一緒に暮らしたい
git-followup @明石高専2E

gitを使う準備をしよう - 中級編