コミットの指定
→ 7.1 Git のさまざまなツール - リビジョンの選択
HEADの1番目の親
HEAD^ HEAD~
HEADの2番目の親 (マージしたときに意味を持つ。取り込んだブランチ上のコミット(自分の作業ブランチではなく))
HEAD^2
HEADの1番目の親の1番目の親
HEAD^^ HEAD~~ HEAD~2
ファイルの更新
→ http://d.hatena.ne.jp/teematsu/20140104
コミットの取り消し (古いコミットの内容でコミットを追加)
git revert <取り消すコミット>
コミットの取り消し (なかったことにする)
ワーキングディレクトリの中身も戻す。
git reset --hard HEAD^
ワーキングディレクトリの中身は変更しない。
git reset --soft HEAD^
ファイル名を変更するときに、git mv せずに先にmvしてしまった。
気にせず git add / git rm すればOK。
git status すると renamed と判定されていることがわかる。
mv したときのdiff
git diff --find-renames
マージの中止
git reset --hard HEAD
ステージングと作業ディレクトリの両方をHEADの内容に戻す。
これからコミットしようとしている変更を、新規のブランチとしてコミットしたい
コミットしようという段階になって、別のブランチを作成しておけばよかった、というケース。
今編集中のブランチのHEADが changeset A で、それを元に現在編集中で、これをコミットするとBができるときに、
Bは、Aとは別の新規ブランチにしたいとする。
単純にbranchを作成してcheckoutすればよい。
git checkout -b 新しいブランチ名
編集中のファイルは維持される。編集中のファイルが、HEADと、checkoutしようとしているchangesetとで書き換わっていなければ、編集中のファイルは維持されるらしい。
マージ中のdiff
共通の祖先から、マージの相手(MERGE_HEAD)までのdiff
git diff HEAD...MERGE_HEAD
共通の祖先から、自分の最新(HEAD)までのdiff
git diff MERGE_HEAD...HEAD
マージに用いる共通の祖先
git merge-base ブランチ ブランチ
共通の祖先からの各commitのサマリ
git show-branch ブランチ ブランチ ブランチ...
show-branchの出力例 (git help show-branch (マニュアル)より引用)
$ git show-branch master fixes mhf * [master] Add 'git show-branch'. ! [fixes] Introduce "reset type" flag to "git reset" ! [mhf] Allow "+remote:local" refspec to cause --force when fetching. --- ★ここまでは、引数に指定したブランチのHEADが表示される。 ★行頭の記号は、 "*" 現在checkoutされているブランチのHEAD "!" それ以外のブランチ
+ [mhf] Allow "+remote:local" refspec to cause --force when fetching. + [mhf~1] Use git-octopus when pulling more than one heads. + [fixes] Introduce "reset type" flag to "git reset" + [mhf~2] "git fetch --force". + [mhf~3] Use .git/remote/origin, not .git/branches/origin. + [mhf~4] Make "git pull" and "git fetch" default to origin + [mhf~5] Infamous 'octopus merge' + [mhf~6] Retire git-parse-remote. + [mhf~7] Multi-head fetch. + [mhf~8] Start adding the $GIT_DIR/remotes/ support. *++ [master] Add 'git show-branch'.
★各ブランチに含まれているコミットには、行頭に"+" (checkoutされているブランチの場合は"*")が付く マージコミットは"-" ★最後の行は、分岐点なので、すべてのブランチに"+"か"*"が付いているはず。
diff
変更のあったファイル一覧
git diff --stat <コミット1> <コミット2>
commit番号
8桁の短い番号を表示
git log --abbrev-commit git show --abbrev-commit
退避
http://qiita.com/fukajun/items/41288806e4733cb9c342
退避
git stash save "コメント"
退避一覧
git stash list
退避したものと、その親changesetとの差分のサマリ
git stash show stash@{0}
退避したものと、その親changesetとの差分
git stash show -p stash@{0}
適用
git stash apply stash@{0}
退避したものを削除
git stash drop stash@{0}
Tortoise GIT
2つのcommitを選択してdiffを見る
- TortoiseGIT > ログを表示
- 2つのcommitを選択して、右クリック > リビジョンを比較
diff表示に使うツールを変更するには
- TortoiseGIT > 設定
- 左のツリーから 差分ビューア
GIT Bash
日本語文字が化ける(□になる)場合は、
タイトルバー右クリックのプロパティでフォントをいったん変更すると解消する。
http://qiita.com/kumazo@github/items/2169e1ee7be278f82b94#1-1