git push origin HEAD:ref / for / master每次都创建一个新的提交,而不是修改以前的更改

时间:2014-01-18 08:30:44

标签: git gerrit

这个问题与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提交,而不是为之前的提交创建补丁

我错过了什么吗?

3 个答案:

答案 0 :(得分:7)

git commit --amend有效,但是,mentioned here

  

您需要在git #'ed提交说明之前在提交消息(change-id)的底部添加gerrit Change-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 "