git boot camp for designer
TRANSCRIPT
Takashi Takebayashi
超簡単にGitが理解できる ~Git Boot Camp for Designer~
Takashi Takebayashi
超簡単にGitが理解できる ~Git Boot Camp for Designer~
多分 きっと
Maybe
超簡単にGitの説明
コマンドの内容
実践
本日のお題
超簡単にGitの説明
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
以上
コマンドの内容
一番最初に行うコマンド
remoteに存在する郵便局をもらう
クローン(clone)
クローン(clone)
remote
local
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
クローン(clone)
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
remote
local
分岐を作成するコマンド
クローン(clone)するとmaster/developという机なので、master/developという机の作業状況を元に別の机を作成する
ブランチ(branch)
ブランチ(branch)
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
remote
local
develop
ブランチ(branch)
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
remote
local
develop feature/xxx
作業する場所を変更するコマンド
今いる机から既にある別の机に移動する
チェックアウト(checkout)
チェックアウト(checkout)
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
remote
local
develop
チェックアウト(checkout)
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
remote
local
develop feature/xxx
コミット(commit)前に行うコマンド
作業した手紙を封筒に入れる
アッド(add)
作業したものを保存するコマンド
封筒の封をする
コミット(commit)
アッド(add), コミット(commit)
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
remote
local
develop feature/xxx
アッド(add), コミット(commit)
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
remote
local
develop feature/xxx
アッド(add), コミット(commit)
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
remote
local
develop feature/xxx
localをremoteに反映するコマンド
ポストに投函する
プッシュ(push)
プッシュ(push)
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
remote
local
develop feature/xxx
プッシュ(push)
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
remote
local
develop feature/xxx
develop feature/xxx
正確にはGitのコマンドではない
別の机の作業を一緒にする
マージリクエスト(merge request)
マージリクエスト(merge request)
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
remote
local
develop feature/xxx
develop feature/xxx
マージリクエスト(merge request)
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
remote develop
feature/xxx
内容が異なっている
マージリクエスト(merge request)
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
remote
develop feature/xxx
マージリクエスト(merge request)
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
remote develop
feature/xxx
同じ内容になる
どうしてコンフリクトするの?
リベースとチェリーピックの違いは?
事前にいただいた質問
コンフリクトが起こる理由
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
feature/xxx
Adevelop
表側の世界
feature/yyy
裏側の世界
B
C
AAA BBB
AAA BBB
BBB BBB
AAA BBB
AAA CCC
コンフリクトが起こる理由
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
feature/xxxB
C
Adevelop
表側の世界
feature/yyy
裏側の世界merge
AAA BBB
AAA BBB
BBB BBB
AAA BBB
AAA CCC
コンフリクトが起こる理由
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
表側の世界 裏側の世界
feature/xxxB
C
Adevelop
feature/yyy
BBBB BBB
AAA BBB
BBB BBB
AAA BBB
AAA CCC
コンフリクトが起こる理由
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
feature/xxxB
C
Adevelop
表側の世界
feature/yyy
裏側の世界merge
B
AAA BBB
BBB BBB
AAA BBB
AAA CCC
BBB BBB
コンフリクトが起こる理由
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
feature/xxxB
C
Adevelop
表側の世界
feature/yyy
裏側の世界
B
❌Bの状態のファイルに
AからCに変更したファイルは うまく取り込めない =コンフリクト
AAA BBB
AAA CCC
BBB BBB
AAA BBB
BBB BBB
コンフリクトへの対応
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
feature/xxxB
C
Adevelop
表側の世界 裏側の世界
B
C’
Bの状態の上に
Cの変更を加えたC’を
プル/リベースで作成する
feature/yyy
AAA BBB
BBB BBB
AAA CCC
BBB BBB
BBB BBB
AAA BBB
コンフリクトが起こる理由
AdventCalendar - デザイナーがこうやってGit覚えて大好きになったよ♡ - Qiita http://qiita.com/yunico-jp/items/87bdd13971e82833f6bb
feature/xxxB
C
Adevelop
表側の世界 裏側の世界
B
C’
これで コンフリクト せずに
マージできる
C’
feature/yyy
AAA BBB
BBB BBB
AAA CCC
AAA CCC
BBB BBB
AAA BBB
履歴の直線性を維持するのが目的
ローカルにリモートの変更を統合する方法でもある
リベース(rebase)
リベース(rebase)
feature/xxx A->A’ B
A Bdevelop
裏側の世界
xxxというチケットの対応で 変更を加えてたものの
リベース(rebase)
feature/xxx A->A’ B
A Bdevelop
裏側の世界
A B->C その間に別の人が
xyzというチケットの変更を
developに反映
リベース(rebase)
feature/xxx A->A’ B
A Bdevelop
裏側の世界
A B->C
マージリクエスト(merge request)をすると コミットが増える
A’ C
リベース(rebase)
A Bdevelop
裏側の世界
A B->C リベース(rebase)なら
コミットが増えず 分岐位置だけが変わる
feature/xxx A->A’ C
リベース(rebase)
A B
裏側の世界
A B->C
マージリクエスト(merge request)をすると 同様に参照位置だけが変わる
feature/xxx A->A’ C
develop
必要な変更だけ取り込むコマンド
資料の山の中から必要な資料だけ取る
チェリーピック(cherry-pick)
チェリーピック(cherry-pick)
feature/ xxx_xyz
css: A->A’ js: α
develop
裏側の世界
css: A’ js: α->α’
css: A’ js: α’->α’’
2つのチケットの変更を反映
css: A js: α
チェリーピック(cherry-pick)
feature/ xxx_xyz
css: A->A’ js: α
css: A js: α
develop
裏側の世界
css: A’ js: α->α’
css: A’ js: α’->α’’
テストをしたらjsに問題が!!
cssの変更だけでも今日中に リリースしないといけないのに!!
チェリーピック(cherry-pick)
feature/ xxx_xyz
css: A->A’ js: α
css: A js: α
develop
裏側の世界
css: A’ js: α->α’
css: A’ js: α’->α’’
hotfix/zzzcss: A->A’ js: α
バグのない部分だけ 別のブランチから取得
チェリーピック(cherry-pick)
feature/ xxx_xyz
css: A->A’ js: α
css: A js: α
develop
裏側の世界
css: A’ js: α->α’
css: A’ js: α’->α’’
hotfix/zzzcss: A->A’ js: α
そこからマージリクエスト(merge request)で マージする
css: A’ js: α
実践
2人(全体が奇数の場合は1つだけ3人)でチームを組んでください
[課題リポジトリ:style guide]をcloneしてください [https://xyz.git]
チェリーピック(cherry-pick)
( *՞ਊ՞*)ノ「いやーstyle guide かなりいいらしいね」 「はい」٩( 'ω' )و
( *՞ਊ՞*)ノ「ステキなんだけど、もうちょっとよくしたいなぁ」 「はい(なんだろう…)」٩( 'ω' )و
( *՞ਊ՞*)ノ「デザインを変えたいんだ、デザイナーだけで」 「えっ!?」٩( 'ω' )و
( *՞ਊ՞*)ノ「デザインをデザイナーだけで変えて欲しいんだ」 「えっ!?」٩( 'ω' )و
お題:変更を反映しなきゃ(使命感
( *՞ਊ՞*)ノ「いやー、こないだのデザイン変更よかったよ」 「はい」٩( 'ω' )و
( *՞ਊ՞*)ノ「だけど、“霧島、まーじりくえすとでしてないってよ”」 「はっ?」٩( 'ω' )و
( *՞ਊ՞*)ノ「つまり、“まーじりくえすと”で変更してくれない?」 「えっ!?」٩( 'ω' )و
( *՞ਊ՞*)ノ「デザイナーだけで“まーじりくえすと”で変更を反映して欲しいんだ」
「えっ!?」٩( 'ω' )و
お題:マージリクエストしな(ry
( *՞ਊ՞*)ノ「いやー、こないだの“まーじりくえすと”すごく評判いいよ」 「はい」٩( 'ω' )و
( *՞ਊ՞*)ノ「だけど、エンジニアに手伝ってもらったって?」 「コンフリクトの部分ですね?あれは仕方がないので」٩( 'ω' )و
( *՞ਊ՞*)ノ「“ダメよ~ダメダメ”」 「はっ?」٩( 'ω' )و
( *՞ਊ՞*)ノ「デザイナーだけで“こんふりくと”も解消できなきゃ」 「えっ!?」٩( 'ω' )و
お題:コンフリクト解消(ry
Thank you for your attention