私はいくつかの些細な変更を加えてからそれらをgitにコミットするスクリプトを書いています。これらは些細な変更なので、それを回避できるときはgit commit --amend
いつでも、具体的には、修正によって他のブランチの履歴が「混乱」しないときに実行したいと思います。修正によって別のブランチが台無しになる場合は、git commit
代わりに標準を実行したいと思います。
たとえば、私のブランチが次のようになっている場合(Git GUIの「すべてのブランチ履歴を視覚化する」):
* [experimental branch] Added feature.
* [master branch] Trivial change from script
* ...
このスクリプトをマスターブランチで実行している場合、実験ブランチの履歴の一部を置き換えるため、修正は行いません。技術的には、これは実際には何も壊しません-元のコミットはまだ実験の歴史の一部であり、ガベージコレクションされないように参照されます-しかし、ほぼ同一ではありませんが、 2つの異なるブランチは、後でリベースまたはマージしたいときに生活を困難にするので、避けたい状況です。
コミットに何かが分岐しているかどうかをスクリプトに自動的に検出させるにはどうすればよいですか?
仮定を単純化することが役立つ場合、私は常にマスターのヘッドでこのスクリプトを実行し、ローカルリポジトリとしてgitのみを使用します-変更をどこにもプッシュまたはプルしません。
このスクリプトはRubyであるため、gitコマンドラインにシェルアウトするか、gitにRubyバインディングを使用することができます。どちらでもこのタスクが簡単になります。