【发布时间】:2016-06-16 17:14:52
【问题描述】:
好的,这个有点复杂,很可能非常具体。让我试着解释一下。
假设我将这个 git repo 拉到我的本地驱动器中。然后进行一些更改。由于这些更改位于许多不同的文件中并且针对不同的目标,因此提交不止一个。假设这些更改的提交具有哈希值ab001 to ab005(五次提交)。然后我创建了一系列补丁并发送到社区进行审查。
同时,假设我意识到主仓库已更改退出,所以我需要重新设置基准。我这样做,解决了所有的冲突。现在这将导致另一个提交,比如说ab006。
一切都好。
但是第二天我得到了关于上一个补丁的 cmets 和建议(一个包含 5 次提交的补丁)。因此,我现在必须根据这些 cmets 进行一些更改,并发送旧补丁的 v2(版本 2)(即 5 次提交)。所以我必须取消提交这 5 个提交,进行更改并再次提交并创建另一个补丁(使用这 5 个提交)。
我将如何进行此操作,我无法取消提交,因为 HEAD 中有一个 rebase 提交。我真的很困惑。
【问题讨论】:
-
git 文档建议您应该在新提交中进行更改,而不是修改已有的提交。请参阅“从上游 Rebase 中恢复”部分,git-scm.com/docs/git-rebase
-
@declan,真的。但是对于每一个小的更改和建议,我都无法发送增量提交。它看起来很草率,并且审阅者对以前的更改失去了把握(因为它还没有被合并)。
-
当然,很公平。
-
如果我在这种情况下,我会“撤消”引入最新 master 更改的 rebase,然后对 ab001-ab005 进行更改,在 master 上重做 rebase。这种方法对你有用吗?如果是这样,我可以提供更多详细信息。
-
@declan,是的,这可行,但每次我都必须解决冲突。很累。
标签: git version-control patch git-commit