有其中將記錄這樣的數據,因爲SHA1不是在所有的時間與參考路徑相關聯的沒有固定的信息。
分支可以移動時,重命名或刪除,而SHA1仍將存儲(除非它不被任何參考圖案引用,它最終會被修剪)
這就是說:
git show-ref |grep yourSHA1|awk "{print $2}"
git show-ref --heads --tags -d |grep yourSHA1|awk "{print $2}"
談到非常接近YOUT想要的東西:
C:\Prog\Git\tests\rep\main5>git show-ref | grep f4a071 | awk "{print $2}"
refs/heads/master
refs/remotes/origin/HEAD
refs/remotes/origin/master
很多選項可用於git show-ref
和將允許您:
- 顯示器也提領SHA1只有
- 顯示SHA1
對裁判的模式
的OP補充說:
它將返回什麼都沒有,如果一個SHA傳遞不引用一個頭或任何其他無法提交的提交?
你知道我們如何做中間步驟來計算出與SHA通過的屬於同一分支的最近提交的SHA嗎?
另外一個管道命令,可以幫助將git name-rev
:
C:\Prog\Git\tests\rep\main5>git name-rev a7768453
a7768453 patches~1
C:\Prog\Git\tests\rep\main5>git name-rev a7768453|gawk "{gsub(/~.*/,\"\",$2);print $2}
patches
由於Jefromi提到的意見,瓷命令將git branch --contain
:
C:\Prog\Git\tests\rep\main5>git branch --contain 1e73e369
master
* patches
tmp
--contains <commit>
只列出包含s的分支特定的承諾。
如果<commit>
需要重新設計或修改,它用於查找所有需要特別注意的分支,因爲這些分支包含指定的<commit>
。
非常感謝,你是對的,它至少在10次中接近9次。 唯一的問題是:如果傳遞的SHA沒有引用頭或任何其他無法提交的提交,它將不會返回任何內容? 您知道我們如何做中間步驟來計算出與SHA傳遞屬於同一分支的最近提交的SHA的SHA(例如,如果我們通過SHA提交32,我們得到SHA返回提交0 (又名HEAD))? – andreb 2010-03-28 12:58:23
@andreb:好點。 'show-ref'僅適用於由refs直接引用的SHA1引用。 'name-rev'可以幫助找到其他人。看到我更新的答案。 – VonC 2010-03-28 13:12:49
@andreb:另請參閱http://stackoverflow.com/questions/917102/in-git-is-there-a-way-to-get-the-friendly-name-for-an-arbitrary-commit瞭解更多 – VonC 2010-03-28 13:19:38