[解決済み] Git のブランチの一覧を最新のコミット順に表示するにはどうしたらよいですか?
2022-03-20 21:27:19
質問
Git リポジトリ内のすべてのブランチのうち、"freshest" ブランチを先頭にした一覧を取得したいのですが、ここで "freshest" ブランチとは、直近にコミットされた (従って、私が注意を払いたい) ブランチということになります。
Git を使って、(a) ブランチの一覧を最新のコミット順に並べ替える、あるいは (b) ブランチの一覧とそれぞれの最終コミット時刻を機械的に読み取れるような形式で表示する方法はありますか?
最悪の場合、私はいつでも
git branch
を実行してすべてのブランチのリストを取得し、その出力をパースし、それから
git log -n 1 branchname --format=format:%ci
をそれぞれのブランチに対して実行し、各ブランチのコミット日を取得します。しかし、これは Windows 上で実行されます。新しいプロセスを立ち上げるには比較的コストがかかるので、ブランチがたくさんある場合はブランチごとに Git の実行ファイルを立ち上げると遅くなる可能性があります。これをひとつのコマンドで実行する方法はないでしょうか?
どのように解決するのですか?
を使用します。
--sort=-committerdate
オプションで
git for-each-ref
;
また、利用可能
Git 2.7.0以降
について
git branch
:
基本的な使い方。
git for-each-ref --sort=-committerdate refs/heads/
# Or using git branch (since version 2.7.0)
git branch --sort=-committerdate # DESC
git branch --sort=committerdate # ASC
結果
高度な使用方法。
git for-each-ref --sort=committerdate refs/heads/ --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))'
結果
Proの使い方(Unix)。
以下のスニペットをあなたの
~/.gitconfig
. recentbのエイリアスは、2つの引数を受け付けます。
-
refbranch
: どのブランチ 先 と 後ろ カラムに対して計算されます。デフォルト マスター -
count
: 最近のブランチをいくつ表示するか。デフォルト 20
[alias]
# ATTENTION: All aliases prefixed with ! run in /bin/sh make sure you use sh syntax, not bash/zsh or whatever
recentb = "!r() { refbranch=$1 count=$2; git for-each-ref --sort=-committerdate refs/heads --format='%(refname:short)|%(HEAD)%(color:yellow)%(refname:short)|%(color:bold green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)' --color=always --count=${count:-20} | while read line; do branch=$(echo \"$line\" | awk 'BEGIN { FS = \"|\" }; { print $1 }' | tr -d '*'); ahead=$(git rev-list --count \"${refbranch:-origin/master}..${branch}\"); behind=$(git rev-list --count \"${branch}..${refbranch:-origin/master}\"); colorline=$(echo \"$line\" | sed 's/^[^|]*|//'); echo \"$ahead|$behind|$colorline\" | awk -F'|' -vOFS='|' '{$5=substr($5,1,70)}1' ; done | ( echo \"ahead|behind||branch|lastcommit|message|author\\n\" && cat) | column -ts'|';}; r"
結果
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] Git が追跡したファイルを .gitignore に登録したまま「忘れる」ようにするにはどうしたらいいですか?
-
[解決済み] Git ですべてのリモートブランチをクローンする方法
-
[解決済み] git rebase の取り消し
-
[解決済み] Git で現在のブランチ名を取得するには?
-
[解決済み] コミットに含まれるすべてのファイルを一覧表示するにはどうすればよいですか?
-
[解決済み] 複数のコミットを1つのスクワッシュされたコミットとして別のブランチにマージするにはどうすればよいですか?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】現在のブランチの先端がリモートブランチより遅れているため、更新が拒否されました。
-
[解決済み] masterブランチと'origin/master'が分岐している、'undiverge'ブランチの方法は?
-
git push reports an error ! [リモート拒否] master -> master (受信前のフックが拒否されました)
-
Gitのプッシュでエラーが発生! [リモート拒否] master -> master (pre-receive hook declined) error: failed to push some refs to .......
-
[解決済み] 複数のgitコミットを元に戻すには?
-
[解決済み] Gitのプッシュエラーです。Unable to unlink old (Permission denied)です。
-
[解決済み] エラーです。リベースを使用してプルできません。あなたはステージングされていない変更を持っています
-
[解決済み] 一重引用符で囲まれた文字列の一重引用符をエスケープするには
-
[解決済み] Gitブランチの作成者を探す
-
[解決済み] Gitで各ブランチとその最終リビジョンの日付を一覧表示する