MarkdownとBullet Journal

いわゆるプログラマーのつぶやき

【Git】show,diff,status,logの活用

Gitで色々確認する際に使うコマンド

git status, git log ,git diff, git showはいずれもお世話になっている便利な確認用コマンドであり、見やすい表示など活用例をまとめた。

オススメ.bashrcの設定例

alias gitshow='git show --oneline --color-words'
alias gitstatus='git status --short --branch'
alias gitlog='git log --graph --decorate --oneline'
alias gitdiff='git diff --color-words'

git status色々

$ git status --short        # staging状態等を簡潔表示
$ git status --branch       # 1行目にブランチ名を表示
  • 簡潔表示の表記説明:
  • 1文字目が対象fileのstaging(index)の状態を表示
  • 2文字目が対象fileの作業ディレクトリ内の状態を表示
凡例 説明
M_ file変更をstaging済み (staged)
_M file変更をstagingしていない (modified)
MM staging後に再びfile変更 (modified)
A_ 新規fileをstaging済み
_A 新規fileを追跡file化したが未staging:git add -N
_D fileをshellでrmしたがgit addやgit rmでは未処理
?? gitが追跡していない(untracked)
UU mergeでconflictした (unmerged)

git show色々

$ git show --oneline        # commitを1行表示+単語単位のカラー差分表示
$ git show --color-words    # commitを1行表示+単語単位のカラー差分表示
$ git show SHA1:files       # あるcommit時点の特定fileの内容を確認
$ git show -1               # 最新commit情報と変更点の表示(git show と同じ)
$ git show -2               # 直前commit情報と変更点の表示
$ git show -3               # 2つ前のcommit情報と変更点の表示

git diff色々

$ git diff origin/main           # ローカルとリモートとの変更箇所表示
$ git diff HEAD..origin/main     # git pull前にリモートとの変更箇所表示
$ git diff origin/main..HEAD     # git push前にリモートとの変更箇所表示
$ git diff old_SHA1..new_SHA1    # commit間の変更箇所表示
$ git diff any_SHA1^..any_SHA1   # あるcommitの変更箇所表示
$ git diff branch..anotherbranch # ブランチ間の変更箇所表示
$ git diff HEAD^                 # 最新commitの変更箇所表示
$ git diff                       # 作業ディレクトリとstagingの変更箇所表示
$ git diff --staged              # stagingと最新commitの変更箇所表示
$ git diff -- files              # staging前のfileの変更箇所表示
$ git diff branch..anotherbranch -- files  # ブランチ間の特定file変更箇所表示
$ git diff --stat                # 変更した行数だけを見る
$ git diff --name-only           # 変更したfile名だけを見る
$ git diff --color-words         # 差分が行単位から単語単位でカラー表示

..の右側が時系列的に新しいものとみなされる

git log色々

$ git log --oneline              # commitメッセージを1行のみ表示
$ git log --graph                # commit/merge履歴をGUI的に表示
$ git log --decorate             # 各branchのHEADの位置を表示
$ git log --stat                 # 変更file名と行数の簡易表示
$ git log --since=2021-12-1      # 指定した日付以降のログを表示
$ git log --until=2022-4-1       # 指定した日付までのログを表示
$ git log --since=2022-1-1 --until=2022-4-1 # 指定日から指定日まで表示
$ git log master                 # ブランチを指定して表示
$ git log files                  # 特定fileのログのみを表示