这个问题与git / gerrit push命令有关
当我使用以下命令将更改提交给git / gerrit时
git commit
git push origin HEAD:ref/for/master
它会创建一个提交。
现在,如果我想修改任何更改(创建补丁) 我修改了文件并使用以下命令
git commit --amend
git log
它修改了之前提交的详细信息
但是当我尝试使用以下命令将其推送到远程主控器时
git push origin HEAD:ref/for/master
它创建了一个新的gerrit提交,而不是为之前的提交创建补丁
我错过了什么吗?
答案 0 :(得分:7)
git commit --amend有效,但是,mentioned here:
您需要在git #'ed提交说明之前在提交消息(
change-id
)的底部添加gerritChange-Id: 234j243rasdf...
,并且更改将修补到您之前的提交 -
在Gerrit documentation中查看有关Change-Id的更多信息。
通过推送到
refs/for/*
或refs/heads/*
分支进行上传期间,Gerrit将使用Change-Id行:
- 创建新的更改:
如果这是第一次看到提交消息中提到的Change-Id,Gerrit将创建一个新的更改以供审核。- 更新现有更改:
如果Gerrit之前已经看过这个Change-Id,但还没有看到这个新的提交对象,Gerrit会将新提交添加为现有更改的新补丁集。- 关闭现有更改:
如果Gerrit之前已经看过此Change-Id,并且将提交直接推送到分支,则使用新提交更新现有更改,并关闭更改并将其标记为已合并。
答案 1 :(得分:0)
您可以安全地使用git commit --amend --no-edit 如果没有--no-edit,它将改变消息,校验和,你最终会有一个新的提交ID。
答案 2 :(得分:0)
我认为为前一次提交创建补丁的真正命令是: git push origin HEAD:refs / 更改 /
例如: git push origin HEAD:refs / 更改 / 1234
要获取提交的gerrit代码,您需要登录gerrit并在" My - >中找到您的提交。变化"菜单中,提交的gerrit代码将出现在浏览器地址栏中链接的末尾,例如,使用以下链接: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to的 5678 强> / gerrit代码将是" 5678 "