修复一个小错误的最好方法是什么,例如,在较旧的提交中输入错误,而不是进行修复它的新提交?我不想通过大量的错误修复来搞乱这段历史。提交。我尚未将提交推送给任何人。
让我们在这个场景中说,我想在1月15日修改代码拼写错误,同时保留其他2个提交。
commit 826da06f085664298164a4bfc9994cad109c59f8
Author: Me
Date: Tue Jan 17 18:48:12 2012 +0800
feature 3 working
commit d816dd97a207add63d31958c3ffba84b65681810
Author: Me
Date: Tue Jan 16 17:47:29 2012 +0800
feature 2 working
commit 972ded30c20692cb74ae07d0c941c43022c905bd
Author: Me
Date: Thu Jan 15 08:48:40 2012 +0800
feature 1 working
答案 0 :(得分:2)
我使用以下方案。
这打开了一个vim编辑器(可能),后面有一个文本
pick 972ded feature 1 working
pick d816dd feature 2 working
pick 826da0 feature 3 working
pick xxxxxx fix feature 1
将此更改为
pick 972ded feature 1 working
f xxxxxx fix feature 1
pick d816dd feature 2 working
pick 826da0 feature 3 working
请注意,我将“修复功能1”提交到第二行并将选择更改为 f 。 这告诉git将“功能1工作”和“修复功能1”提交合并到一个提交,并使用第一个提交消息(即“功能1工作”)。
“功能2工作”和“功能3工作”提交git叶“未触动”。 (实际上它将此提交应用于新的历史记录。因此它们将获得新的ID)
答案 1 :(得分:1)
rebase -i <sha of commit PRIOR to the one you want to change>
然后选择要更改的提交,删除等。
答案 2 :(得分:1)
git rebase -i HEAD~3
是你想要做的。你是3个提交的作者,如果你没有把它推到某个地方那么我认为继续下去是好的。在任何其他情况下,我建议不要执行该操作。
答案 3 :(得分:0)
我首选的方法是从有问题的提交中创建一个新分支。修复了新分支和提交的问题。然后将此新分支合并到原始分支。不确定这是不是你想要的。