我正在写一个脚本,做一些微小的更改,然后将它们提交给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