標籤圖形的歷史不是線性的。人們不只是標記基線(master
)。什麼是Git分支過去最近的標籤?
例如大多數有價值的JS/CSS庫從基線執行分支上的發佈以保持清晰的差異歷史記錄。他們提交釋放工件(編譯/縮小的JS/CSS),以便用戶可以輕鬆抓取工件而無需構建。如果他們在master
上標記,則master
歷史記錄將對構建工件產生巨大的全部差異。
真實的例子:從How to get the latest tag name in current branch in Git?
bash# cd js/jquery
/home/user/devel/js/jquery
bash# git remote -v
origin https://github.com/jquery/jquery.git (fetch)
bash# git co master
Already on 'master'
bash# git describe --tags
2.1.0-beta1-590-g47ccf3d
bash# git log --graph --decorate --simplify-by-decoration --oneline --all
* 70605c8 (origin/master, origin/HEAD) Ajax: Only form-encode requests with a body
* 47ccf3d (HEAD -> master) Attributes: do not set properties to false when removing booleans
| * 8339185 (origin/compat) Tests: Make regexes for iOS devices more rigid
| | * f9846ae (tag: 3.0.0-alpha1) 3.0.0-alpha1
| |/
|/|
...
* | 1185427 (tag: 2.1.0-beta1) Tagging the 2.1.0-beta1 release.
技巧是在現實世界中沒用,因爲:
git describe --tags
我得到2.1.0-β1在上面的例子中,但最近的努力是3.0.0-alpha1。
我公司目前已經從手動審查collapsed commit history的最佳方式:
git log --graph --decorate --simplify-by-decoration --oneline --all
來自@ydroneaud的[答案](http://stackoverflow.com/a/24830212/1027800)有一個按時間順序打印標籤的命令......這不正是你想要的嗎?我認爲按時間順序是理想的指標,因爲這些標籤不一定具有共同的歷史。 – hinerm
@hinerm項目可能會支持舊分支機構。至於jQuery的例子,你可能會在2.1.4之前的版本中看到v1.11.3,而不尊重歷史DAG。 – gavenkoa