Я пишу скрипт, который вносит некоторые тривиальные изменения, а затем фиксирует их в git. Поскольку это тривиальные изменения, я хочу делать git commit --amend
всякий раз, когда могу сойти с рук, в частности, когда поправка не «испортит» историю других ветвей. Если поправка испортит другую ветку, я хочу вместо этого сделать стандартный git commit
.
Например, если мои ветви выглядели так (а-ля "Визуализация всей истории веток" в Git GUI):
* [experimental branch] Added feature.
* [master branch] Trivial change from script
* ...
и я запускаю этот скрипт в основной ветке, тогда я не хочу вносить изменения, потому что я бы заменил часть истории экспериментальной ветви. Технически, это на самом деле ничего не сломает - исходный коммит все еще будет частью истории эксперимента, и на него все еще будут ссылаться, так что он не будет собирать мусор - но иметь почти, но не совсем идентичные коммиты в две разные ветви усложняют жизнь, когда я позже хочу перебазировать или объединить, поэтому я хочу избежать этой ситуации.
Как я могу сделать так, чтобы мой скрипт автоматически определял, имеет ли коммит что-нибудь из него разветвленного?
Если упрощающие предположения помогают, я всегда запускаю этот скрипт на голове мастера и использую только git в качестве локального репозитория - я нигде не извлекаю и не извлекаю изменения.
Этот сценарий написан на Ruby, поэтому я могу либо перейти в командную строку git, либо использовать привязки Ruby для git - в зависимости от того, что облегчит эту задачу.