我在gerrit上传了一个补丁X,但是错误地我包含了一个我不应该包含在补丁中的文件Y.现在,我想为X提交一个新的补丁集,没有文件Y.是否可以这样做
从新的Patchset for X中删除Y的步骤
手动删除我在Y中所做的所有更改(不是最好的方法,但它从X的新Patchset中删除了Y)
git add .
git commit -s --amned
repo upload .
答案 0 :(得分:3)
答案简短:
$ git reset HEAD^ <file to remove from commit>
$ git commit --amend
这将使<file>
在本地修改为静止,因此假设您根本不想再进行修改,现在可以恢复该修改:
$ git checkout <file>
这是最快捷的方式。另一种选择:
$ git log -n1 --oneline | cat
$ git reset --soft HEAD^
$ git reset <file to be unstaged>
$ git commit -C <sha1 commit hash from "git log" above>
答案 1 :(得分:0)
我没有使用过Gerrit,但你可以修改我认为的提交。
修改提交
使用git commit修改提交时 --amend,在提交消息中保持Change-Id行不被修改。这个 将允许Gerrit自动进行 通过修改更新更改 提交。
http://gerrit.googlecode.com/svn/documentation/2.0/user-changeid.html#amend
评论后:
您确定Change-Id行是否存在并且是提交消息的最后一行?如果提交消息中不存在Change-Id行,请从Web上的更改页面复制该行并将其放入提交消息中。
答案 2 :(得分:0)
您的更改已经过审核了吗?如果他们仍在等待审查,您可以将其标记为已放弃并将其删除。之后,您可以再次提交正确的代码。
如果您的更改已经审核并且补丁已经合并到git存储库中,那么解决方案应该不同,撤消线程中解释的git push; Undoing a 'git push'