個人的「便利だな」と思ったGitコマンド4選
存在を知った時や使ってみた時に「これけっこう便利だな」と思ったGitコマンド4つをまとめました。
git fetch -p
-p
を付けることで、削除されたリモートブランチのリモート追跡参照が削除されるようになります。
例えばリモートリポジトリでbranchA
が削除されると、git fetch -p
によりローカルリポジトリ上のorigin/branchA
が削除されます。
※ git fetch --prune
も同様です
※ git pull -p/--prune
でプルする際に行われるフェッチにも適用できます
git log --oneline
コミットハッシュが短縮され、コミットログが1行で表示されるようになります。
※ git log --abbrev-commit --pretty=oneline
も同様です
表示例: git log
の場合
commit cmhash2commithash2commithash2commithash2 (HEAD -> master, origin/master, origin/HEAD)
Author: taro <taro@sample.jp>
Date: Thu Sep 1 12:34:56 2022 +0900
コミットB
commit cmhash1commithash1commithash1commithash1 (tag: v1.2.3)
Author: taro <taro@sample.jp>
Date: Wed Aug 31 11:22:33 2022 +0900
コミットA
表示例: git log --oneline
の場合
cmhash2 (HEAD -> master, origin/master, origin/HEAD) コミットB
cmhash1 (tag: v1.2.3) コミットA
git status -s
git status
の結果が短い形式で表示されるようになります。
※ git status --short
も同様です
表示例: git status
の場合
On branch branchA
Your branch is ahead of 'origin/branchA' by N commits.
(use "git push" to publish your local commits)
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: modified_file_both.md
modified: modified_file_staged.md
new file: new_file_staged.md
renamed: rename_target.md -> renamed_staged.md
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: deleted_file_unstaged.md
modified: modified_file_both.md
Untracked files:
(use "git add <file>..." to include in what will be committed)
untracked_file.md
表示例: git status -s
の場合
D deleted_file_unstaged.md
MM modified_file_both.md
M modified_file_staged.md
A new_file_staged.md
R rename_target.md -> renamed_staged.md
?? untracked_file.md
またgit status -sb
とすると、git status -s
の表示にブランチとその追跡情報が加わります。
## branchA...origin/branchA
D deleted_file_unstaged.md
MM modified_file_both.md
M modified_file_staged.md
A new_file_staged.md
R rename_target.md -> renamed_staged.md
?? untracked_file.md
ショートフォーマットの時に各ファイル名の左側に表示される記号の詳しい説明についてはこちらを参照してください。
git branch -v/-vv
ローカルブランチ名の一覧とともに
- 先頭コミットのハッシュ値
- 上流ブランチ名(
-vv
の場合のみ)とその関係性 - 先頭コミットのメッセージ
が表示されるようになります。
※ git branch —v
はgit branch -—verbose
と同様です
表示例: git branch -v
branchA cmhasha ファイル追加
branchB cmhashb ファイル編集
branchC cmhashc [gone] ファイル削除
* master cmhashm Merge pull request #XX from abc/develop
表示例: git branch -vv
branchA cmhasha [origin/branchA] ファイル追加
branchB cmhashb ファイル編集
branchC cmhashc [origin/branchC: gone] ファイル削除
* master cmhashm [origin/master] Merge pull request #XX from abc/develop
※ 上流ブランチが削除されている場合「gone」と表示されます(例: branchC)
特に自身の開発現場では、プルリクエストをマージする際に「作業ブランチをリモートリポジトリから削除する」かつ「Squash and merge
を用いることがある」ため、このコマンドは不要なローカルブランチの特定に役立っています。
(git fetch -p
→)git branch -v/-vv
の結果に含まれる「gone」という表記をもとに不要なローカルブランチを探しています。
※ git branch --merged
の結果にはスカッシュマージされたブランチが含まれません
Discussion