kawazu_gkgkのブログ

井の中の蛙が勉強して得たことを記録する.

Gitの入門

Gitとりあえず使う用のコマンド表

git status

変更・ステージされたファイルを確認

git log

コミットのログを表示
'q'キーで終了

git log (commit ID)

指定されたハッシュ値のコミット以降のコミットログを表示
他に・・・

  • git log (commit ID A)..(commit ID B)
    (commit ID A)以降~(commit ID B)までのログを表示.
    コミットの指定にはHEAD:最新リビジョン,(commit ID)^:'^'の数だけ前,(commit ID)~(x):(x)個前等も使える

git log -(数)

新しい順に(数)個のコミットログを表示

git log --since="(x) hours "

x時間前までのコミットログを表示

その他時間範囲指定

  • since="(x) minute"
    (x)分前以降のログ
  • --before="(yyyy-mm.dd)"
    sinceと同様.(yyyy-mm.dd)で指定した日付以降のログ表示

git log --pretty=oneline

コミットログを各一行にして表示

git log --pretty=format:"%h %s"

コミットログの表示情報をハッシュ値(%h),各ログの1行目(%s)のみにして表示

git log -C -C -p

ファイル間含む行コピーのあるログを表示

git add (file)

新しいファイル(ファイル名)の追跡を開始
もしくは指定ファイルをステージ

git add -i

git addの対話モード起動

git add -p

git addのパッチモード起動

git diff

ステージされた内容に対する作業ツリー上の差分を表示.
git logと同様の範囲指定が使える.

git diff --cached

リポジトリの内容に対するインデックスの差分を表示.

git diff HEAD

リポジトリの内容に対する変更全ての差分を表示.
HEADは「現在のブランチに対する直近のコミット」という意味

git diff --stat (commit ID)

HEADと指定コミットの差分に関する統計情報表示

git branch

ローカルのブランチをすべて表示

git branch -m (old) (new)

ブランチ名を(old)から(new)に変更
(new)が既に存在しているブランチ名の場合エラーとなる
-Mにすると強制的に変更(すでに存在するブランチ名の場合上書き)

git branch (new)

現在チェックアウトしているブランチを基に新しいブランチ(new)を作成

git branch (new) (original)

既存のブランチ(original)を基に新しいブランチ(new)を作成

git branch -d (branch)

ブランチ(ブランチ名)を削除
ただしチェックアウト中のブランチに完全にマージされていない場合エラーとなる
-Dにすると強制削除

git tag

タグ一覧表示

git tag (tag) (branch/commit ID)

指定ブランチ・コミットの位置にタグ(tag)を打つ

git checkout (branch)

ブランチ(branch)をチェックアウト

git checkout -b (new) (original)

ブランチ作成とチェックアウトを同時に行う

git merge (branch)

チェックアウト中のブランチに(ブランチ名)を直接マージ

git merge --squash (branch)

(ブランチ名)の変更をすべて取出しチェックアウト中のブランチに圧縮マージ
ステージされるのみのため別途コミットが必要

git commit

コミット

git commit -a

gitが追跡しているファイルの変更全てをコミット
コメントを記入するためのエディタが起動する

git commit -m "(comment)"

(comment)をコメントとしてコミットする

git commit -C (commit ID) --amend

ひとつ前のコミットを今のステージ内容で訂正する
-C (commit ID)で指定コミットのメッセージを流用する
小文字cにするとエディタで編集できる

git cherry-pick (commit ID)

コミット(commit number)をチェックアウト中のブランチにマージ

git cherry-pick -n (commit ID)

コミット(commit number)をチェックアウト中のブランチにマージ
ただしステージするのみ
コミット時は-mでコメントを加えなくてもチェリーピックしてきたコミットのコメントがそのまま追加される

git revert (commit ID)

指定コミットを取り消すコミットを行う

git revert -n (commit ID)

指定コミットを取り消す変更を作成しステージする

git reset (commit ID)

指定コミットの状態までファイルを戻す
取り消す差分は作業ツリーに残る

git reset --soft (commit ID)

指定コミットの状態までファイルを戻す
取り消す差分はステージングエリアに残る

git reset --hard HEAD^

最後のコミットを削除
取り消す差分はステージングエリア及び作業ツリーにも残らないため注意

git blame (file)

指定ファイルに対する変更ごとのコミット者とタイムスタンプを表示

git blame -L (表示開始行番号),(表示終了行番号) (file)

指定行番号間のみgit blame表示
(表示終了行番号)は+4や-5のように書くと相対的な行番号となる

git blame -M (file)

ファイル内の行コピー箇所をオリジナルと同一のコミットとしてgit blame表示

git blame -C -C (file)

他ファイルからの行コピーをオリジナルと同一のコミットとしてgit blame表示

git rebase (branch)

指定ブランチ(branch)の分岐点をチェックアウト中のブランチ先頭に移動させる

git rebase -i (commit ID)

rebaseの対話モードを起動して指定コミット以降のコミットへのrebaseのための編集を行う


参考文献
Travis Swicegood『入門git』