我經常會參考git log --graph --decorate --oneline --all --full-history
來查看我的分支的當前狀態,但它不顯示分離的頭部/匿名分支。有沒有辦法讓分離的頭部出現在這個圖表中?有沒有一種工具可以讓git在圖中顯示「分離頭部」?
我知道git reflog
存在,但由於沒有結構,因此很難閱讀 - 所有您必須繼續的是提交消息,如果尚未完成提交,它仍可能是WIP。
一些背景(這不是回答問題所必需的,但將有助於解釋它的動機):我是Mercurial用戶,我的工作流涉及很多匿名分支。我傾向於使用hg heads
很多來檢查這些頭,並經常hg rebase
分離或結合一系列的提交的基礎上,爲了便於理解代碼審查的目的有意義。
雖然我習慣了使用git,但是我經常發現自己有分離的頭部,例如,我重新綁定了某個分支的某些提交以創建新分支。找到這些分離的頭部令人討厭git reflog
,說實話,它有點可怕,他們只是從平常的git log
消失。我甚至忘記了舊的提交方式,並且在一兩天後不得不從git reflog
中挖出。在Mercurial中,這些提交仍然是一個匿名頭像,我會提醒我需要完成它們。
這聽起來很懶散,但有想到的事先分支的名字很煩人。那我以後也必須刪除這個名字。這聽起來並不輕鬆。我想知道是否有一個擴展可以爲我保留指向每個未命名分支的指針。然後,如果我決定保留它,我可以重命名分支,或者如果我想讓它被分享,就可以刪除它。 – dmnd 2013-05-03 23:28:25
@dmnd你有拉丁字母來減輕你的生活。當你想分支時,執行'git checkout -b a'。它將創建一個名爲'a'的分支,它非常像一個匿名分支,因爲它的名字絕對沒用。如果你用這種方式寫出來的話,你正在做一些git不適合的東西。也許你可以在你的問題中提到,如果你不指定分支,你究竟如何跟蹤你的工作。你是否定期檢查提交消息?人們也傾向於使用別名,所以你可以將上述縮寫爲'gco -b a'。儘管如此,您仍然需要爲分支使用唯一的名稱。 – 2013-05-03 23:39:24
我不知道這樣的擴展,但它聽起來很直接。用一個shell腳本代替「git commit」,首先測試HEAD是否被分離(通過檢查'git symbolic-ref HEAD'的退出狀態),如果是,則使用你喜歡的任何命名方案創建一個新分支。 – David 2013-05-03 23:44:23