Más contenido relacionado Similar a SVN経験者のためのGIT入門 (20) SVN経験者のためのGIT入門2. アウトライン
SVN と GIT の比較
これだけ覚えよう
– トピックブランチ
– 各コマンドの説明
実際の使用例
その他便利なコマンド紹介
3. SVN と GIT の比較
SVN
GIT
pull
update
branch
こ
作業 作業
こ
が
重
add/commit
(update)
squash
commit
push
要
4. これだけ覚えよう
ブランチという概念
トピックブランチ
git pull –rebase
– git fetch
git checkout
git add -u
git commit
git rebase -i
git push
5. ブランチという概念
svn の trunk/release と同じ
特定のコミットの別名
– ただし、コミットする度に指す先が変わる
リモートブランチ
– 他の人と共同作業しているブランチ
ローカルブランチ
– 自分しか使わないブランチ
• 好き勝手できる!!!
6. トピックブランチ
特定の作業用のブランチ
– 新機能実装 / バグの修正 / コメントの修正 / リファ
クタ
何をするにしてもこのブランチを作成する。
これがあることで、作業の切り替えが便利に。
– 今の作業を置いといて、急ぎのバグ修正をす
る。
– typo 見つけたので見つからないうちに修正
push するまで他人に全く影響が出ない!
7. git pull (--rebase)
rebase オプションにより svn update と同等
– git pull --rebase
他人の変更を取得し、自分のブランチとマージ
fetch と merge(rebase) の組み合わせ
– git fetch;git merge origin/master
– (git fetch; git rebase origin/master)
ローカルブランチで使用しないこと!
– 基本は master ブランチで使用
– (origin/master – master - ローカルブランチ )
8. git fetch
svn update と同等
– ただし対象は origin/master などリモートブラン
チ
他人の変更 ( 最新のリモートブランチ ) を
取得する
9. git checkout
svn に該当するコマンドはない
– 現在のローカルのファイルに対し、
該当コミットのファイルを取得するなど
一部同じような動作もある
– svn checkout と混同しないようにしよう
特定のブランチ ( コミット ) に移動する
– git checkout -b でブランチ作成・移動が一発で可
能
10. git add (-u)
svn に該当するコマンドはない
– svn では常時 git add -u されている状態
– svn add と混同しないようにしよう
次のコミットに使用するファイルを選択する
– git add -p で行単位での指定も可能
どうせ後から改変できるから
– git add -u .
11. git commit
svn commit に似ている
– git では add されないとコミットされない
– git commit -a で svn commit と見た目は同じ挙動
でも全然違うので気をつけよう
新しいコミットを作る
現在の修正が不要になったとしてもコミットすべし!
– しまった、あの変更だけは取っておきたかった
ということがないように・・・。
何か変更したらとりあえず git commit !
– git commit -a -m”`date`” とかを alias してもいいか
も
git commit –amend で1つ前のコミットと統合できる
12. git rebase ( -i )
svn に該当するコマンドはない
– svn update と感覚は似ているかも
特定のブランチ ( コミット ) に対して
自分のブランチのコミットをくっつける
– git cherry-pick を繰り返す
– あくまで主体は「特定のブランチ」の方
git checkout –ours ファイル名 で取ってこれるのは
「特定のブランチ」のファイルであることに注意
git reset なんかもあるけどこっちの方がわかりやすい
13. git rebase ( -i )
pick
reword
edit
squash
fixup
exec
14. git rebase ( -i )
pick
– コミットを使用する
reword
– コミットメッセージを改変する
fixup
– コミットを1つ前のコミットにまとめる
edit
– コミットの内容を修正する
消したいとき
– その行を消す
15. git push
svn commit
– ここで初めて他人に影響が出る
リモートブランチに変更を反映
16. 実際の使用例
ベクトルクラスに operator+ を作ろう
operator+ を operator+= で実装 → コミット
正しくできたか printf で調べてみる → コミット
関係ないけど Vector のスペルが違う!
– 別ブランチで修正してくる
operator+= の実装にミスを発見・修正 → コミット
operator+ が正しく動くことを確認
rebase して、 operator+= の修正と
operator+ の実装を push して終了 デモ
17. その他便利なコマンド紹介
git status -sb ( svn status )
– 現在の変更を見る
git log ( svn log )
– ログを見る
git show ブランチ ( コミット )
– 該当のコミット ( ブランチ名は最新コ
ミット )
の内容を見る
18. その他便利なコマンド紹介
git reset
– HEAD を移動する
– コミットを分割する時などに
– git reset –hard は
危険なので注意して使用すること
git reflog
– しまった!と思ったらこれで復元
– ただし、コミットされていない変更は
復元できません!!!
19. その他便利なコマンド紹介
git rebase –onto ブランチ A ブランチ B
– A に rebase するけど、 B の変更は含まない
git mergetool
– コンフリクトした時用
git gc
– パフォーマンスの改善に
git merge
– rebase よりこちらを推奨したいが、
不要なコミットも混ざる