目次

Pro Git 日本語版 も読むべき。。

入門git(オーム社)読書メモ

<html> <div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/427406767X/r4wh-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41k7xonwpdL._SL160_.jpg" alt="入門git" style="border: none;" /></a></div><div class="amazlet-info" style="line-height:120%; margin-bottom: 10px"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/427406767X/r4wh-22/ref=nosim/" name="amazletlink" target="_blank">入門git</a><div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/427406767X/r4wh-22/ref=nosim/" title="入門git" target="_blank">amazlet</a> at 11.06.17</div></div><div class="amazlet-detail">Travis Swicegood <br />オーム社 <br />売り上げランキング: 10931<br /></div><div class="amazlet-sub-info" style="float: left;"><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/427406767X/r4wh-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div></div><div class="amazlet-footer" style="clear: left"></div></div> </html>

The Pragmatic Programmars シリーズ。約190ページとコンパクト。

「でびあんぐる」監訳なので Debian / Ubuntu に関する訳注が充実。

以下、CVS から SVN をスキップして GIT に移行しつつある nishimotz の備忘録とコメント。

基本的な仕組み

なお、SVN(Subversion)との連携機能は充実しているが、CVS ユーザはいったん SVN にリポジトリを移行するのが現実的な方法、とのこと。

ブランチ関連

git rebase : ブランチから変更を取りだして、別のブランチの先頭で再生する。

git merge よりも好ましい結果が得られることが多い。

Git超入門 - 猿でもできるGit rebase

(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 が自動問題追跡に非常に有効