6

任意の実行可能な Git post-commit フックが与えられた場合、それは非対話型のリベース中に実行されません。GIT-REBASE(1) マンページによると、どちらも非対話型モードの前者のシノニムではありrebase --force-rebaseません。rebase --no-ff

しかし、まったく同じ Git フックを使用してインタラクティブなリベースをrebase --interactive --no-ff実行すると、ポストコミットで実行されます。

誰かがこの動作の背後にある理論的根拠を説明できますか?

4

2 に答える 2

0

https://git-scm.com/docs/git-rebaseから

--no-ff --interactive を使用すると、変更されていないコミットを早送りする代わりに、リベースされたすべてのコミットをチェリーピックします。これにより、リベースされたブランチの履歴全体が新しいコミットで構成されることが保証されます。

--interactive がない場合、これは --force-rebase と同義です。

これは、トピック ブランチのマージを元に戻した後に役立つ場合があります。このオプションは、新しいコミットでトピック ブランチを再作成するため、「元に戻す」必要なく正常に再マージできるためです (revert-a-faulty-merge のハウツーを参照してください)。詳細)。

Cherry pick は新しいコミットを作成し、git post-commit フックは新しいコミットが作成された後に実行されますよね?

から: https://git-scm.com/docs/git-cherry-pick

説明 1 つ以上の既存のコミットが与えられた場合、それぞれが導入する変更を適用し、それぞれに新しいコミットを記録します。これには、作業ツリーがクリーンである必要があります (HEAD コミットからの変更はありません)。

それは明らかですか?

于 2015-10-16T08:12:43.117 に答える