格里特和回购

时间:2011-04-24 04:50:26

标签: git repository gerrit

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

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

3 个答案:

答案 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'