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 logcommit 8e2e072dbd5d778bef607c8c6821a724b7f4a65b (HEAD -> branch-a)Date: Tue Sep 21 09:49:34 2021 +0900test1 commitcommit 30336d1155b292ff18022d6071253d94f1916361 (origin/master, origin/branch-a, origin/HEAD, master)Date: Wed May 13 05:05:40 2020 +0900Initial commit
ちなみに、git reflog で直近で自分が移動したHEADの位置が確認できる
$ git reflog8e2e072 (HEAD -> branch-a) HEAD@{0}: commit: test1 commit30336d1 (origin/master, origin/branch-a, origin/HEAD, master) HEAD@{1}: checkout: moving from master to branch-a30336d1 (origin/master, origin/branch-a, origin/HEAD, master) HEAD@{2}: checkout: moving from branch-a to master30336d1 (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 HEAD8e2e072dbd5d778bef607c8c6821a724b7f4a65b$ git rev-parse --short HEAD8e2e072
git show ~~ などで commit hash を指定する場合、4文字以上であればgit側で一致するcommit hashを選んで返してくれる。
commit hashはそのリポジトリ内で一意であれば問題がなく、もし重複するcommitがある場合は、ambiguous argumentというエラーメッセージが返される。
$ git show 3033commit 30336d1155b292ff18022d6071253d94f1916361 (origin/master, origin/branch-a, origin/HEAD, master)Date: Wed May 13 05:05:40 2020 +0900Initial commit