git

Last-modified: 2016-10-09 (日) 11:46:37

コミットの指定

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