Pan*_*hen 48 git merge branch master gerrit
我在远程存储库中设置了一个分支,并在该分支上进行了一些提交.现在我想将远程分支合并到远程主服务器.
以下是我的操作:
但是在第5步获取错误消息:
remote: Resolving deltas: 0% (0/12)
remote: ERROR: missing Change-Id in commit message
...
remote: Change-Id: I55862204ef71f69bc88c79fe2259f7cb8365699a
To ssh://prc@test.gerrit.xxx.com:29418/hello_git
! [remote rejected] HEAD -> refs/for/master (missing Change-Id in commit message)
Run Code Online (Sandbox Code Playgroud)
Raf*_*cki 77
检查您的提交是否包含Change-Id: ...在他们的描述中.每次提交都应该有它们.
如果不是,请使用git rebase -i重新设置提交消息并添加正确的Change-Ids(通常这是已审核提交的第一个版本的SHA1).
将来,您应该安装commit hook,它会自动添加所需的Change-Id.
scp -p -P 29418 username@your_gerrit_address:hooks/commit-msg .git/hooks/在存储库目录中执行或从中下载
http://your_gerrit_address/tools/hooks/commit-msg并复制到.git/hooks
小智 27
试试这个:
git commit --amend
Run Code Online (Sandbox Code Playgroud)
然后复制并粘贴Change-Id: I55862204ef71f69bc88c79fe2259f7cb8365699a文件的末尾.
保存并再次推送!
如果您需要更改-ID添加到多个提交,您可以从您的格里特服务器下载钩和运行这些命令更改-ID添加到需要它们一次全部提交.下面的示例修复了当前分支上尚未推送到上游分支的所有提交.
tmp=$(mktemp)
hook=$(readlink -f $(git rev-parse --git-dir))/hooks/commit-msg
git filter-branch -f --msg-filter "cat > $tmp; \"$hook\" $tmp; cat $tmp" @{u}..HEAD
Run Code Online (Sandbox Code Playgroud)
这是因为Gerrit被配置为在提交消息中要求Change-Id。
http://gerrit.googlecode.com/svn-history/r6114/documentation/2.1.7/error-missing-changeid.html
您必须更改要推送的每个提交的消息,以包含更改ID(使用git filter-branch),然后再推送。
| 归档时间: |
|
| 查看次数: |
129121 次 |
| 最近记录: |