Git 入門 実践編
<htmlday> in Tokushima
Presented by か (@ka_)
実践してみよう
●
まずは一人で開発する想定で使う
●
過去の自分は他人
– 十分役立つ
●
他人 ( 他の PC) との連携は考えない
– リモートという概念を考えない
リポジトリを作成 (Windows)
●
何処かに好きな名前でディレクトリ作成
– “git-test-win” がいいかも
●
ディレクトリ上で右クリック
– Git Create repository here...
●
これでディレクトリはリポジトリになった
●
.git というディレクトリが出来るはず
– これがリポジトリとしての実体
リポジトリを作成 (Windows)
●
Make it Bare はチェックしない
リポジトリを作成 (Mac)
●
SourceTree で作成
– SourceTree を開く
– 新規作成アイコンクリック
●
名前は何でもいい
– “git-test-mac” がいいかも
リポジトリを作成 (Mac)
リポジトリ作成 (Mac)
スクリーンショットは git-test-0 になってます
ごめんなさい
リポジトリを作成 (CUI)
● “mkdir git-test”
● “cd git-test”
● “git init”
●
おわり!かんたん! ( 説明が )
Author 設定
●
コミットにはそれを作った人情報が付随する
●
名前とメールアドレス
● Windows
– TortoiseGit > Settings > Git
● Mac
– SourceTree のインストール時に終了している
Author 設定
テキストファイル作成
●
“sample.txt” というファイルを作る
●
“a” という文字だけの行を追加
●
お好きなテキストエディタでどうぞ
リポジトリの様子 (Windows)
コミットする
●
コミットを作ることをコミットするとも言う
● Windows
– Git Commit → “master”
● Mac
– Files in working tree という所から
– Files staged in the index という所へ移動
– Commit
コミットコメント
●
コミットにはメタ情報として説明を残す
●
以下のような慣例がある
– 1 行目 : 概要 ( 無いと辛い )
– 2 行目 : 空行
– 3 行目以降 : 詳細 ( 無くても OK)
コミット作成の様子 (Windows)
コミット作成の様子 (Mac)
コミット後のリポジトリ
(Windows)
コミット後のリポジトリ (Mac)
ログを見る
●
リビジョングラフを見ること
● Windows
– 右クリック > TortoiseGit > Show log
● Mac
– そのまま表示されているはず
ログ (Mac)
コミットをどんどんしていく
●
“sample.txt” を編集する
– “b” を追加してコミット
– “c” を追加してコミット
“b” を追加 (Windows)
“b” を追加後 (Windows)
“b” を追加したコミット作成 (Win)
コミットによる差分表示
●
ファイルを選択して右クリック > Diff
“b” を追加したコミット作成 (Mac)
●
差分が見える
コミットはたくさん作ろう
●
粒度の塩梅は経験によるとしか言えない
●
二つの基準 ( 例 )
– どのコミットでもエラーが出ない
– コミットコメントが短く書ける
コミットがある安心感
●
いつでも好きなコミットに戻れる
– 戻り方はブランチの説明と併せて行う
●
コミットごとの全て変更が分かる
– いつ
– 誰が
– 何を
複数ファイルを管理
●
“sample2.txt” を作る
●
“z” という文字だけの行を追加
●
同様にコミットする
ログ (Windows)
ブランチを作る
●
新機能を試したい
●
ブランチを作って本流を汚さないようにする
●
ブランチには名前を付ける
– “b-0” という名前に今回はします
●
“master” というブランチを今は操作していた
ブランチの作り方
● Windows
– 右クリック > TortoiseGit > Create Branch
● Mac
– Branch > New Branch
– Check out new branch のチェックを確認
ブランチの作り方 (Windows)
ブランチが出来た (Windows)
ブランチの作り方 (Mac)
チェックアウトする
● Windows
– 右クリック > TortoiseGit > Switch/Checkout
● Mac
– ブランチ作成時に自動でチェックアウト
– 手動
●
左の BRANCHES から選んで右クリック
● Checkout b-0
チェックアウト (Windows)
チェックアウト完了 (Windows)
コミットを作っていく
●
“sample.txt” を編集
– “e, f, g” を各行に追加
– コミット
●
“sample2.txt” を編集
– “y, z” を各行に追加
– コミット
ログを確認
●
“b-0” がコミットを重ねていることが分かる
●
“master” は動いていない
ログ (Windows)
戻る方法について
●
“reset” という機能で戻れる
●
新しいブランチを作って行う
– 不用意に既存のブランチで行うと損失が起こる
– チェックアウトを忘れない
●
“hard” 形式が最も単純
– … であると思う
– その他の形式についての説明は省略
マージする
●
“b-0” 「を」マージする
●
“master” 「に」マージする
●
Non Fast Forward 方式にする
マージの手順 1
●
“master” にまずはチェックアウト
●
“b-0” をマージする
●
“non fast forward” にチェックを入れる
マージの手順 2
● Windows
– “master” にチェックアウト
– ログを表示
– “b-0” を右クリック
– “merge to “master”” を選択
– “non fast forward” をチェック
まずはチェックアウト (Windows)
マージ (Windows)
●
No FastForward にチェック
マージ完了 (Windows)
マージの手順 3
● Mac
– “master” にチェックアウト
– Merge をクリック
– “b-0” を選択
– Create a commit even if … をチェック
過去の変更を取り消す
●
Revert という機能を使う
●
まずは敢えて間違えたコミットを作る
●
その後いくつかコミットを重ねる
●
それを無かったことにしてみる
実験準備
●
“sample.txt” を編集
– “i” という行を追加 ( 本来は h のはずですね )
– コミット
●
“sample2.txt” を編集
– 2 つほどコミットを作ってみる
●
“w, v” を追加してみるなど
準備完了 (Windows)
あ!しまった! ( 棒読み )
●
2 つも前のコミットが間違えています
– 別に 200 個前でもいい
●
今更そこまで戻るわけにもいかない
コミットを打ち消すコミット
●
その気になれば
– ブランチを作る
– 3 つ前まで戻る
– やり直す
●
本流 (master) はそう簡単には変えられない
●
コミットを打ち消すコミットを作ればいい
Revert
● Windows
– ログを表示
– 打ち消したいコミットで右クリック
– Revert change by this commit
● Mac
– 打ち消したいコミットで右クリック
– Rever commit
Revert (Windows)
Revert 完了 (Windows)
他にも方法はあります
●
この程度なら手動でもいい
●
“cherry-pick” が使えなくもない
– 本来の用途っぽく無いけど
●
“rebase” という最強の過去改変手段
– 世界線が移動します
– これも本来の用途っぽく無いけど
●
そもそも master ばかり弄ってはいけない
色々実験しましょう
●
リポジトリのディレクトリをコピー
●
リポジトリのバックアップになる
●
バックアップからやり直せる

20130608 git-1