1

我在 gerrit 上上传了一个补丁 X,但我错误地包含了一个我不应该包含在补丁中的文件 Y。现在,我想为 X 提交一个新的补丁集,没有文件 Y。是否可以这样做

从 X 的新补丁集中删除 Y 的步骤
手动删除了我在 Y 中所做的所有更改(不是最好的方法,但它从 X 的新补丁集中删除了 Y)
git add .
git commit -s --amned
repo upload .

4

3 回答 3

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>
于 2012-03-16T22:43:44.160 回答
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 上的更改页面复制该行并将其放入您的提交消息中。

于 2011-04-24T04:54:34.153 回答
0

您的更改是否已经审核?如果他们仍在等待审核,您可以将其标记为已放弃并摆脱它们。之后,您可以再次提交正确的代码。

如果您的更改已审核并已合并到 git 存储库中,则解决方案应该不会有所不同,撤消线程中解释的 git push; 撤消“git push”

于 2014-09-17T19:47:33.987 回答