2011-04-24 40 views
1

我在gerrit上传了一个补丁X,但是由于错误,我添加了一个我不应该包含在补丁中的文件Y.现在,我要提交X新补丁集,没有文件Y.是否有可能做到这一点Gerrit和repo

步骤从新的补丁集删除Y表示X
我Y中做出手动删除所有的变化(不是最好的方式做到这一点,但它新的补丁集删除Y代表X)
git add .
git commit -s --amned
repo upload .

回答

0

我没有用太多格里特,但你可以修改提交,我相信。

修改一项提交

当修改与GIT提交提交 --amend,离开转变-ID线的提交消息在未修改。这个 将允许Gerrit自动更新 提交的修改 。

http://gerrit.googlecode.com/svn/documentation/2.0/user-changeid.html#amend

评论后:

你确保更改-ID线存在并且你的提交信息的最后一行?如果提交消息中没有Change-Id行,请将该行从Web上的更改页面复制并放入提交消息中。

+0

嗯,我只是将文件恢复到提交之前的状态,当我修改了提交时,文件未包含在内。 – ankur 2011-04-24 09:40:47

+0

@ankur - 你能用你试过的步骤更新你的问题吗? – manojlds 2011-04-24 16:44:18

+0

看到我编辑的答案。 – manojlds 2011-04-24 19:45:43

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> 
0

是您的更改已经审查?如果他们仍在等待审核,那么可以将其标记为已废弃并将其删除。之后,您可以再次提交正确的代码。

如果您的更改已审核并且修补程序已合并到git存储库中,则解决方案应该不同于撤消在线程中解释的git push; Undoing a 'git push'