WOF Tech Blog

Git Command Tips

Gitでよく使うコマンドとナレッジを書く。

よく使うコマンド

クローン

git clone [repository url]

例:

git clone https://github.com/ishim0226/ConnpassToSlack.git

今いるブランチを確認

git branch

例:

$ git branch
* master

ブランチ作成

master から新しくブランチを切る

master へ移動

git switch master

新ブランチを作成してそのブランチに移動

git switch -c [新ブランチ]

例:

git switch -c branch-a

変更差分を確認する

ステージング前のファイルの差分を確認

git diff

ステージングしたファイルの差分を確認

git diff --staged

リモートブランチとの差分を確認 (ローカルブランチ名を省略した場合は現在のブランチとの比較になる)

git diff [ローカルブランチ名] [origin/リモートブランチ名]

変更を退避する

git stash

stashしたものを一覧表示

git stash list

stashしたものを戻す

git stash pop

not staged/staged 両方のファイルがstashの対象になる。がpopするとすべてnot stagedの状態で戻される。

ナレッジ

HEAD とは

今、自分が作業している場所を示すポインタ。 例えば以下のgit logの結果は、「今いる場所が、branch-a であり、test1 commitが最新のコミットである。」を示している。

$ git log
commit 8e2e072dbd5d778bef607c8c6821a724b7f4a65b (HEAD -> branch-a)
Date: Tue Sep 21 09:49:34 2021 +0900
test1 commit
commit 30336d1155b292ff18022d6071253d94f1916361 (origin/master, origin/branch-a, origin/HEAD, master)
Date: Wed May 13 05:05:40 2020 +0900
Initial commit

ちなみに、git reflog で直近で自分が移動したHEADの位置が確認できる

$ git reflog
8e2e072 (HEAD -> branch-a) HEAD@{0}: commit: test1 commit
30336d1 (origin/master, origin/branch-a, origin/HEAD, master) HEAD@{1}: checkout: moving from master to branch-a
30336d1 (origin/master, origin/branch-a, origin/HEAD, master) HEAD@{2}: checkout: moving from branch-a to master
30336d1 (origin/master, origin/branch-a, origin/HEAD, master) HEAD@{3}: checkout: moving from master to branch-a

origin/HEAD とは

リモート側にあるHEADのこと。基本的にデフォルトブランチの最新位置に出現する。通常はmaster(main)がデフォルトなので、基本的に origin/HEAD = origin/master と考えてよさそう。

参考ページ

https://qiita.com/ymzkjpx/items/00ff664da60c37458aaa

commit hash の文字数について

commit hash の文字数は40文字だが、--short 等のオプションを指定することで短く(先頭7文字)表示できる。

$ git rev-parse HEAD
8e2e072dbd5d778bef607c8c6821a724b7f4a65b
$ git rev-parse --short HEAD
8e2e072

git show ~~ などで commit hash を指定する場合、4文字以上であればgit側で一致するcommit hashを選んで返してくれる。 commit hashはそのリポジトリ内で一意であれば問題がなく、もし重複するcommitがある場合は、ambiguous argumentというエラーメッセージが返される。

$ git show 3033
commit 30336d1155b292ff18022d6071253d94f1916361 (origin/master, origin/branch-a, origin/HEAD, master)
Date: Wed May 13 05:05:40 2020 +0900
Initial commit