gitを使いこなしてみよう!
DESCRIPTION
2014/04/16に行われた、VSハッカソン特別編『今日から始めるGit & GitHub入門』での発表資料です。TRANSCRIPT
Gitを使いこなしてみよう!
@Posaune
自己紹介
•まえかわ ひろし a.k.a @Posaune
•#京アジャ
•#検これ
•MS MVP for Visual Studio ALM
•(検閲削除)
今日話さないこと
•Gitの細かいコマンドの使い方•「逆引きGit入門」•「Gitポケットリファレンス」
•HookScript•使えたら超便利
•GitHubもろもろ•moririringさんので完璧のはず•Github Pagesも便利よ。
•Github的なるものの代替手段•Gitlabo•gitbucket
学習リソース(オフライン)
学習リソース(オンライン)
•Lean Git Branching•http://pcottle.github.io/learnGitBranching/
さて、Gitでできること理解してもらえましたか??
Git使ってみようと思った人?
僕がお話しすること
GitをもっとGitらしく活用するための「きっかけ」
キーワードは・・・
歴 史 改 変
歴史改変ツール Git
「そんな『歴史改変』なんて大げさな・・・」
なにそれこわい
大丈夫、こわくないよ!
(わかって使えば)
Git =
Git = ChangeSetの集合
ChangeSet-追加-削除-変更
Git =自由に操作できるChangeSetの集合
差替え
あるチェンジセットを別のものに書き換える
挿入
あるチェンジセットを間に差し込む
削除
あるチェンジセットを消し去る
入替
チェンジセットの順番を入れ替える
結合
複数のチェンジセットを統合する
・・・・・・
それで、何が嬉しいの??
便利な場面を考えてみよう
例えば、こんなとき。
うおー、Typoった…
あああ、追加もれがぁ…
やっべ、個人的なメモまでコミットしちゃったよ…
差替え
うおー、Typoった…
あああ、追加もれがぁ…
やっべ、個人的なメモまでコミットしちゃったよ…
git commit –amendgit rebase
修正しとこ。
続いて、こういうときも
このコードをベースに開発してよ
拝承
ごめん、渡したコード古かった
ファッ!?
しゃーない、ここに追加のコミットおいて、rebase、と。
挿入 git checkoutgit addgit rebase
・・・ちょっとはイメージ湧きました?
さて、他にも使いどころはたくさんあるんですが、
ちょっと脱線。
歴史改変、といえば・・・?
平 行 世 界
Git =平行世界を持ったChangeSetの集合
平行世界歴史改変ツール Git
平行世界:ブランチって?
平行世界
平行世界2つのChangeSetが適用された世界
1つのChangeSetが適用された世界
ブランチ:ChangeSetの分岐に過ぎない
ブランチに特有のコマンド
分岐
あるチェンジセット以降に平行世界を作る
git branchgit checkout -b
合流
ある平行世界の変更を取り込む
git merge
差替え
平行世界の出発点を差替える
git rebase
差替え
平行世界の出発点を差替える
あとはほとんど一緒!
ブランチの使いどころ
どういうときにブランチ=平行世界を使う?
例えば・・・
よーし、新しい機能実装だー!
んんん・・・。手詰まり。
別のやろっと♪
ベース 新機能1 新機能1
新機能2 新機能2
なんかカオス
ベース
新機能1 新機能1
新機能2 新機能2
平行世界で対処しよう!
ベース
新機能1 新機能1
新機能2 新機能2
平行世界で対処しよう!
ベース
新機能1 新機能1
新機能2 新機能2
平行世界で対処しよう!
トピックブランチ
他にも・・・
よし、新機能開発だ!
拝承
既存機能でバグ出たぞゴルァ
ファッ!?
ベース 新機能 新機能
バグ修正 バグ修正
目的が混ざる・・・
新機能 新機能
バグ修正 バグ修正
平行世界で対処しよう!
ベース
新機能 新機能
バグ修正 バグ修正
平行世界で対処しよう!
ベース
新機能 新機能
バグ修正 バグ修正
平行世界で対処しよう!
ベース
Hotfixブランチ
まとめると・・・
ベース
新機能1 新機能1新機能2 新機能2
平行世界で対処しよう!
バグ修正 バグ修正Hotfixブランチ
トピックブランチ
ベース
新機能1 新機能1新機能2 新機能2
平行世界で対処しよう!
バグ修正 バグ修正Hotfixブランチ
リリースブランチ
トピックブランチ
ベース
新機能1 新機能1新機能2 新機能2
平行世界で対処しよう!
バグ修正 バグ修正Hotfixブランチ
リリースブランチ
トピックブランチ
開発ブランチ
参考: git-flow
まぁここまでいかなくても。
結論:やりやすいようにやろう
歴史改変しちゃダメなとき
まとめ(ない)
Gitは「らしく」使わないといまいちメリットわからない
「らしく」使うの結構大変
キーワード
歴史改変
平行世界(ブランチ)
とにかくコマンドをいっぱい打って慣れること!
まずは、トピックブランチから
ベース
新機能1 新機能1
新機能2 新機能2
トピックブランチ
Enjoy Branching!