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

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

入門git
入門git
posted with amazlet at 11.06.17
Travis Swicegood
オーム社
売り上げランキング: 10931

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

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

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

基本的な仕組み

  • CVS/SVN : ファイルを追跡する。
  • GIT : コンテンツ(=コミット=パッチ・差分=ハッシュ値で一意に特定できる情報)を追跡する。ファイル名はコンテンツに与えられたメタデータに過ぎない。
  • CVS/SVN : ファイルをaddする。変更を作業ファイルに作る。変更をリポジトリにコミットする。
  • GIT : 「作業ツリー」「インデックス(ステージングエリア)」「リポジトリ」「リモートリポジトリ」といった階層。
    • git addはファイルではなく「変更をaddする」。
    • ステージングエリアは「コミットする前に変更を練り上げる」場所。

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

git_pragmatic_book.txt · 最終更新: 2014/01/18 12:27 by Takuya Nishimoto
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0