web-dev-qa-db-ja.com

変更IDを再作成するGerrit

Gerritを使用しています。次のコマンドを使用しました

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

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

何か提案がありますか?

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

だから、これは私の側の完全なエラーでした。 git commit --amend -m "InitialCommit"をコミットしようとしたとき

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

14
Frank Sposaro

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

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

git commit --amendと入力してコミットメッセージを編集すると、古いchange-idが残っています(これは良いことです)。

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

経験則:--amend -mをgerritと一緒に使用しないでください。

27
Tomasz Wysocki

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

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

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

周りにも同様の質問があります 参照用

1
Abhijeet
  1. git commit --amend
  2. Change-Id行を手動で削除し、保存して閉じます
  3. git commit --amend --no-edit

そして、フックがない場合、フックは新しいChange-Idハッシュを作成します。

0
drgnfr