我正在寫一個腳本,做一些微小的更改,然後將它們提交給git。因爲這些都是微不足道的變化,所以只要我能夠避開它,我就會想要做git commit --amend
--具體來說,當修改不會「弄亂」任何其他分支機構的歷史時。如果一個修改會搞亂另一個分支,我想要做一個標準的git commit
。如何檢測git提交是否是其他提交的父代?
例如,如果我的樹枝看上去像這樣(一拉「可視化的所有分支歷史」 Git中GUI):
* [experimental branch] Added feature.
* [master branch] Trivial change from script
* ...
,我在主分支運行此腳本,然後我不我不想做一個修改,因爲我會取代實驗分支的一部分歷史。從技術上講,這並不會破壞任何東西 - 最初的提交仍然是實驗歷史的一部分,並且仍然會被引用,因此它不會被垃圾回收 - 但幾乎不完全相同的提交兩個不同的分支會讓我後來想要重新組合或合併時遇到困難,所以這是我想避免的情況。
如何讓腳本自動檢測提交是否有任何分支?
如果簡化的假設有所幫助,我總是在master的頭上運行這個腳本,並且我只使用git作爲本地存儲庫 - 我不會在任何地方推送或拖動更改。
這個腳本是在Ruby中的,所以我可以通過shell來執行git命令行,或者我可以使用Ruby綁定來執行git - 無論哪種方式都可以讓這個任務變得更容易。
您的第一個建議看起來非常適合我需要的東西。看起來我甚至可以做'git tag --contains HEAD'來爲標籤做同樣的事情。 – 2010-08-08 18:19:46