Pro Git 日本語版 も読むべき。。
The Pragmatic Programmars シリーズ。約190ページとコンパクト。
「でびあんぐる」監訳なので Debian / Ubuntu に関する訳注が充実。
以下、CVS から SVN をスキップして GIT に移行しつつある nishimotz の備忘録とコメント。
なお、SVN(Subversion)との連携機能は充実しているが、CVS ユーザはいったん SVN にリポジトリを移行するのが現実的な方法、とのこと。
git rebase : ブランチから変更を取りだして、別のブランチの先頭で再生する。
git merge よりも好ましい結果が得られることが多い。
(before) 3 / 1--2-+--4 (after) 1--2--3--4
git add -p : 対話的パッチモード
git commit -a : 作業ツリーの最新バージョンをリポジトリにコミットする(addとcommitを同時に行う)
git diff : 作業ツリーとステージングの差分
git diff –cached : ステージングとリポジトリの差分
git branch -m : ブランチ名の move
ブランチは、その中で行われた最新のコミットのみを記憶する。
コミットは直前のコミットへのリンクを持つ(有向グラフ)
git checkout -b alt master : master から alt ブランチを作り(git_branchと等価)、さらに checkout を行う
git checkout alt 作業ツリーを変更 git add git commit git checkout master git merge alt # altにおける変更がmasterにマージされ、ステージされた状態になる。 # --squash で圧縮マージになる 確認(コンフリクトの有無など) git commit
チェリーピック:コミット一つ分をマージする
コンフリクトへの対処:git mergetool ⇒ git commit
ブランチの削除 : git branch -d branchname
git blame (filename) : 「コミット名=ハッシュ値、コミットした人、タイムスタンプ、行の内容」を得る
git branch -r : リモートブランチの表示
git fetch : リモートから変更を取得
git pull : リモートから変更を取得し、同時にローカルにマージする
git push : コミットされた変更だけをリモートに送る
タグ:リポジトリの特定のコミットにブックマークのようなものをつける
git tag : 確認
git tag (tag_name) : 現在の作業ツリーのコミットにタグを作る
git tag contacts/1.1 contacts : contacts ブランチの最後のコミットにタグを打つ
タグはブランチと同じようにチェックアウトできる
リリースブランチ:通常 RB_1.2 のように名付ける
リリースの準備ができたらタグを作り、ブランチは削除すればよい
現在いるブランチは削除できないので、master に戻ってから削除
サブモジュール:外部レポジトリの追跡
git gc
git archive
こんな感じで使う: git archive --format=zip -o hoge-master-131220.zip master
git rebase
git reflog : 作業履歴の一覧。amend や reset も隠せない。。
git bisect : 特に run が自動問題追跡に非常に有効