[英]Get date, hash and branch name of all branches
以下命令列出了我所有本地分支的最后一個提交哈希和分支名稱:
git show-ref --heads
輸出:
<hash> <branch-1>
<hash> <branch-2>
...
<hash> <branch-n>
但是,我想查看每個分支的日期。 以下命令僅顯示當前分支上的日期和哈希值,但不顯示上次提交的分支名稱:
git log -1 --format="%ci %H"
輸出:
<date> <hash>
我怎樣才能得到兩者結合的結果?
<date> <hash> <branch-1>
<date> <hash> <branch-2>
...
<date> <hash> <branch-n>
我使用的是Windows 10,沒有花哨的命令環境,只是基本的命令提示符。
我能夠稍微調整這個偉大的GitHub帖子以獲得以下內容:
$ for branch in `git branch | grep -v HEAD`;do echo -e
`git show --format="%ci %cr %H" $branch | head -n 1` \\t$branch; done | sort -r
輸出:
2017-03-07 11:38:38 +0800 2 hours ago 87ed1306a1c06576043cd398097a1dc0ec456632 branch1
2017-03-07 02:50:06 +0000 3 hours ago 577fe106a9eb5763cbfd5bce87cfa9448ef52ca8 master
2017-03-07 02:50:06 +0000 3 hours ago 577fe106a9eb5763cbfd5bce87cfa9448ef52ca8 branch2
2017-03-03 17:07:05 +0800 4 days ago 419a23b246ad932c9659b70fded4b1362e92d884 branch3
沒有“分支日期”這樣的東西。 或者,也許有太多的東西。 你需要選一個。
具體來說,分支名稱只是某個特定提交的名稱,名稱具有一些特殊屬性(您可以將該名稱git checkout
“獲取”在分支上),並且一旦在分支上,您可以git commit
創建一個新的提交並更新name-to-hash-ID條目。
提交自己確實有約會。 更准確地說,它們有兩個時間戳,一個用於作者,一個用於提交者。 由於分支名稱(如master
或develop
命名一個特定提交,因此您可以檢索這些提交時間戳中的任何一個並將其用作日期。 但是如果我們將分支標簽移動到另一個不同的提交,這個日期將會改變,也許會倒退。 如果兩個不同的分支名稱指向同一個提交,則兩者都必須具有相同的提交時間戳。
分支 - 事實上,幾乎所有 Git引用:分支名稱,標記名稱,特殊名稱(如stash
,甚至HEAD
本身)也有reflog ,每個reflog條目記錄何時以及為什么某些內容更改了該引用:
8dbdf33 HEAD@{11}: reset: moving to HEAD^
70ac787 HEAD@{12}: cherry-pick: change default python path for FreeBSD
8dbdf33 HEAD@{13}: checkout: moving from diff-merge-base to stash-exp
這也是:
8dbdf33 HEAD@{6 weeks ago}: reset: moving to HEAD^
70ac787 HEAD@{6 weeks ago}: cherry-pick: change default python path for FreeBSD
8dbdf33 HEAD@{6 weeks ago}: checkout: moving from diff-merge-base to stash-exp
這些reflog條目最終會到期,通常在30到90天之后(取決於reflog條目指定的提交或其他對象是否可以從引用的當前值訪問 ),但在此之前,某些reflog條目或條目可能符合條件“分支日期”。
Tim Biegeleisen的回答可以從每個分支名稱所指向的提交中獲取提交者時間戳。 在PRETTY FORMATS部分下的git log
文檔包括,例如:
%ci :提交者日期,類似ISO 8601的格式
對於健壯的腳本,我建議替換:
for branch in `git branch | grep -v HEAD`
有:
for branch in $(git for-each-ref --format='%(refname:short)' refs/heads)
雖然(或類似的東西 - 例如,可以在for-each-ref
直接完成更多的工作)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.