我的 git 存储库中有以下更改历史记录:
---X---Y---Z---A---B---C
我从代码 Z 的基础开始工作,并进行了 A、B 和 C 三个更改。这些更改中的每一个都已作为单独的评论上传到 Gerrit 上,并且每个更改都取决于之前的更改。
经过审查后,我想删除更改 A,以便我的更改历史记录为:
---X---Y---Z---B---C
正确的流程是怎样的git rebase -i
and git commit
让它发挥作用?
我假设如下:
-
Use git rebase -i HEAD~3
显示最后三个提交。这显示了文件内容:
pick 1234567 Commit A message
pick 1a2b3c4 Commit B message
pick abcdefg Commit C message
然后我可以删除第一行并保存文件以删除第一个提交。
这就是我陷入困境的地方......如果我尝试git commit --amend
我只能修改 C 的提交。因此我不知道如何将我的 rebase 更改推送到 Gerrit 进行审查repo upload .
or git push
我使用的是 Gerrit 2.2,因此审核页面上没有 rebase 按钮。
以下步骤现在对我有用:
-
使用 git rebase -i HEAD~3 显示最后三个提交。这显示了文件内容:
pick 1234567 Commit A message
pick 1a2b3c4 Commit B message
pick abcdefg Commit C message
然后我可以删除第一行并保存文件以删除第一个提交。
A git log
现在显示我的 B 和 C 在 Z 基数之后的变化,以及它们的新 SHA-1 值
-
然后我可以将每个更改单独推送到各自的评论中:
git push ssh://myserver:29418/project SHA1_of_B:ref/changes/123
git push ssh://myserver:29418/project SHA1_of_C:ref/changes/789
Where 123
and 789
分别是变更 B 和 C 的审核编号。我的 B 和 C 更改都有新的补丁,并且已正确重新调整基础。
原来我的问题只是理解我必须git push
两者都单独改变。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)