我有一个问题,当我从gerrit中选择一个提交,进行更改等等。我想在我的提交之前用--amend将它们提交回我的提交,我怎么能这样做? 现在我只添加-A所有文件,但我不知道下一步该做什么
答案 0 :(得分:1)
您案例中的Gerrit工作流程是:
git add -A .
git commit --amend
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。