18

私はゲリットを使用しています。次のコマンドを使用しました

$ cd .git/hooks
$ scp -P 29418 demo@localhost:hooks/commit-msg .
$ cd ../..

これにより、変更 ID がコミット メッセージに追加されますが、コミットを修正すると、新しい変更 ID が作成されます。したがって、私が gerrit にプッシュバックすると、パッチ セットが追加されるのではなく、まったく新しいレビュー エントリが作成されます。

何か提案してください。

答えは見つかりましたが、stackoverflow では自分の質問に答えることはできません。

したがって、これは私の側の完全なエラーでした。git commit --amend -m "Initial Commit" をコミットしようとしたとき

私はコミットメッセージをインライン化していましたが、それは変更 ID を一掃していたので、新しいものを与えてくれました。

4

3 に答える 3

34

commit-msg フックは次のように機能します。

  1. コミット メッセージに change-id があるかどうかを確認します。
  2. そうでない場合は生成します。

コミット メッセージを入力git commit --amendして編集すると、まだ古い変更 ID が残っています (これで問題ありません)。

ただし、入力git commit --amend -m "...."すると、変更 ID が削除されているため、gerrit は新しい ID を生成します。

経験則: --amend -mgerrit では使用しないでください。

于 2011-12-05T22:02:27.527 に答える
1

git commit --amendまたはそれgit commit --amend -m "...."が役に立たず、gerrit が変更 ID の欠落についてまだ不平を言っている場合。(これは主にネットワークの問題が原因で発生します)

これは私がそれを解決した方法です(チェックアウトされたディレクトリ参照の親ディレクトリに commit-msg フックが適用されていることを確認してください):

  1. を使用して変更を隠しgit stashます。
  2. gitk &直前のコミットへの変更をハード リベースするために 使用されます。ここに画像の説明を入力
  3. 次に、 Repo からプルしてリベースしgit pull --rebaseます。
  4. git stash apply次に、参照を使用して、隠した変更を適用します。を使用して合併競合があれば解決しgit mergetoolます。
  5. git commitまたはを使用して変更を再度コミットしましたgit commit --amend。これにより、新しい変更 ID が生成されました
  6. コマンドを使用して、リポジトリのブランチに変更をプッシュしますgit push ...

参考までに同様の質問があります

于 2015-08-26T02:23:53.343 に答える