无法将代码推送到gerrit git存储库

时间:2019-06-28 06:32:42

标签: git gerrit

我们的开发设置是:

用户代码==> gerrit存储库==> DEV存储库==> INT存储库

当我尝试将代码推送到gerrit存储库时,会引发以下错误:

git/master% git push gerrit HEAD:refs/for/master


Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 1.05 KiB | 1.05 MiB/s, done.
Total 7 (delta 3), reused 3 (delta 0)
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, done   
remote: ERROR: [1688e36] missing Change-Id in commit message footer
remote: 
remote: Hint: To automatically insert Change-Id, install the hook:
remote:  gitdir=$(git rev-parse --git-dir); scp -p -P 29418 use_abc@rbcm- 
gerrit.abc.mno.com:hooks/commit-msg ${gitdir}/hooks/
remote: And then amend the commit:
remote:  git commit --amend
remote: 
To ssh://abcd.mno.com:29418/datacompiler/DataCompilerDevelopment
! [remote rejected]    HEAD -> refs/for/master ([1688e36] missing Change-Id 
in commit message footer)
 error: failed to push some refs to 'ssh://user_abc@mno- 
 gerrit.abc.mno.com:29418/datacompiler/DataCompilerDevelopment'

我从错误消息中了解到问题是"[1688e36] missing Change-Id in commit message footer"

i.e,即旧的提交之一缺少其中的Change-Id,这在推送到Gerrit时是必需的。

当我用Google搜索时,我发现重新基准化是纠正旧提交消息的技术。 (git amend用于修改最新的提交消息。但在我的情况下,要更正的消息已经很旧了)

当我尝试执行rebasing时,我在该提交上丢失了其他提交。

 git rebase -i HEAD~5

 pick a09061420 commit message 1.
 pick 046316704 commit message 2.
 pick b5df179e7 commit message 3.
 pick b58fc9c41 commit message 4.
 pick 646bc8899 commit message 5.

我想更改commit message 4.

我做了如下修改:

 pick a09061420 commit message 1.
 pick 046316704 commit message 2.
 pick b5df179e7 commit message 3.
 reword b58fc9c41 updated commit message 4.
 pick 646bc8899 commit message 5.

我已保存文件并将其推送。 但是我从1-3中丢失了提交。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您不会丢失任何提交。但是,在您推送更改后,commit-4和commit-5(646bc8899)的提交ID将被更改,因为您正在commit4中进行更改,因此其提交ID将被更改,commit-4对于commit-5是父项,因此其ID也会更改。

我还觉得它不是您所看到的屏幕快照,因为您正在用HEAD〜10执行它,并且结果仅包含5次提交,而您应该看到10次提交。如果不存在10个提交,则会出现错误。 因此,commit4之后的所有提交都将具有相同内容的新ID。

例如,在重新设置基准之前,例如-

pick b4e6a4d commit message 1.
pick cf8782b commit message 2.
pick c05b513 commit message 3.
pick 4966621 commit message 4.
pick f4297e7 commit message 5.
pick 48eaf3e commit message 6.

,您将其更改为:

pick b4e6a4d commit message 1.
pick cf8782b commit message 2.
reword c05b513 message changed from commit message 3.
pick 4966621 commit message 4.
pick f4297e7 commit message 5.
pick 48eaf3e commit message 6.

推送后将导致以下结果:

b4e6a4d commit message 1.
cf8782b commit message 2.
f42f02f message changed from commit message 3.
f8a49c4 commit message 4.
3f4e71e commit message 5.
81f5af5 commit message 6.
相关问题