Gerrit樱桃挑选

时间:2014-02-21 15:43:29

标签: git gerrit

我有一个问题,当我从gerrit中选择一个提交,进行更改等等。我想在我的提交之前用--amend将它们提交回我的提交,我怎么能这样做? 现在我只添加-A所有文件,但我不知道下一步该做什么

3 个答案:

答案 0 :(得分:1)

您案例中的Gerrit工作流程是:

  • 使用评论页面中的网址从Gerrit获取更改
  • 进行更改
  • 使用git add -A .
  • 添加对索引的更改
  • 使用git commit --amend
  • 修改先前的提交
  • 将修正后的提交推回Gerrit git push gerrit master:refs/for/master(用您的和远程分支名称替换master

答案 1 :(得分:1)

仅对最新提交进行修改。让我们假设您要修改的提交被调用(具有SHA-1代码)111。您可以在git log中看到提交的真实SHA-1代码。

您可以使用git reset --hard使您的本地分支指向您要修改的提交。注意,对于没有Gerrit的“普通”git,这将是一个非常糟糕的主意,因为你通过修改已推送的提交来重写历史记录!

我假设您已经对某些文件进行了本地的,未提交的更改,并且您希望将这些更改应用于提交111。您必须存储这些更改,因为git reset --hard will remove them and it couldn't be undone

所以你必须这样做(用你所在分支的名称替换master):

git stash save
git reset --hard 111
git stash apply
<do some more changes to commit 111 if needed>
git commit --amend
git push gerrit master:refs/for/master 

瞧 - 你的承诺111经过修改并用Gerrit更新。

还有另一种方法 - 您可以使用git rebase --interactive,但在这种情况下,我发现它比git reset更复杂。

答案 2 :(得分:0)

我建议使用checkout而不是从Gerrit选择更改/补丁集。惠特签出提交不会取决于。在你的情况下,修改最后一次修改将影响最后一次提交,这是樱桃选择 - 这是正常的。但是如果你想修改1. commit的更改,那么只需先删除cherry pick commmit。