你好,我的问题是我在代码中做了一些修改后,我把它推送到Gerrit仓库。假设我做了一个新的修改或者修正了一个错别字。我想知道如何在相同的提交中再次推送我的代码而不创建新的。
这就是我第一次提交的方式
git add .
git commit -m "whatever"
push ssh://username@gerrit.bk.com:29418/val/Test_Gerrit HEAD:refs/for/master
现在,在另一个修改之后,这就是我如何修改
git add .
git commit --amend
push ssh://username@gerrit.bk.com:29418/val/Test_Gerrit HEAD:refs/for/master
,但它总是在Gerrit中创建一个新的提交。我如何修改和推送我的代码而不创建一个新的提交?
但是它总是在Gerrit中创建一个新的提交
这确实是预期的结果,如"push to Gerrit change with force or not ?":
所示。外卖信息:强制推送("当推送到Gerrit的
HEAD:refs/for/branch
时,即使本地分支的提交历史在rebase/amend之后被重写,-f
")也不需要。
但是:如果Change-Id缺失或不同,则创建一个新的提交。
Gerrit文档中提到:
如果找到匹配的审查,Gerrit将在现有更改上添加新的提交作为新的补丁集。
OP Louay Gourrida报道:
问题是提交是在没有 change - id的情况下创建的(change - id是自动生成的),所以当你在提交中进行更改并再次推送时,Gerrit不会识别提交原因,因为没有change - id。
因此,它创建一个新的提交,也没有Change-Id。我必须在我的本地
/.git/hooks
中添加一个名为commit-msg
的文件,该文件在每次提交时自动生成Change-Id
。
这是commit-msg钩子:
由
git commit
和大多数其他提交创建工具(如Git citool或Git gui)自动调用的Git钩子。Gerrit Code Review提供的这个钩子的实现是一个简短的shell脚本,它自动在提交消息的页脚插入一个全局唯一的
Change-Id
标签。当出现时,Gerrit使用这个标签来跟踪跨精选和重基的提交。