【发布时间】:2021-12-10 16:12:55
【问题描述】:
我在 git 中有一系列提交。假设提交 ID 是commit1, commit2, commit3。请注意,每个后续提交都包含之前的更改。
我需要修改 commit1(修改了源文件,我需要将其反映在 commit1 中),然后将修改传播到 commit2 和 commit3。 git 中最好的工作流程是什么?
【问题讨论】:
-
我建议您不要更改存储库的历史记录。只需修改您的树,以便您拥有所需的一切,然后作为 commit4 提交。更改历史记录是可能的,但很容易变得一团糟,通常与您使用版本控制软件的原因相悖
-
@ErniBrown 我明白了。我正在使用公司内部工具为每个提交创建一个拉取请求,这会阻止用户创建额外的提交。当审查拉取请求并需要更改时,首选方法是修改提交而不是创建新提交(从而创建新的拉取请求)。这就是我尝试这样做的原因
-
请注意,修改后的提交是新的提交。您可以通过
git rebase的编辑功能修改提交及其所有后代,但这些也都将是新提交:原件将被删除。 -
@Quentin 哦,我明白了。使用我正在使用的这个内部工具,修改提交只会更新拉取请求;它实际上并没有创建一个新的拉取请求(除非我修改了提交消息,在这种情况下它会创建一个新的拉取请求)
-
@user5965026 我认为 Quentin 的评论虽然在技术上是正确的,但在回应您所说的“首选方法是修改提交而不是创建新提交”时可能会造成混淆。 Quentin 只是简单地指出,即使是修改也是“创建一个新的提交”。我认为尽管您的意思是“首选方法是修改提交而不是创建一个额外的提交”。您显然希望用一个更好的新提交替换该提交,而不是添加另一个仅包含修复的提交。这只是语义。
标签: git