Git 如何在旧提交上提交更改将其置于历史之上
我有几个提交C1->C2->C3->C4(最后一个) 对于我的项目,添加到C4的功能被中止 我打字得到了C3Git 如何在旧提交上提交更改将其置于历史之上,git,Git,我有几个提交C1->C2->C3->C4(最后一个) 对于我的项目,添加到C4的功能被中止 我打字得到了C3 git checkout <commit_id> git签出 对它做了一些修改 我现在处于超然状态 我想提交并将C3修改推到历史之上 C1->C2->C3->C4->C5(=C3修改) 最好的方法是什么?从当前分离的头部状态,您可以创建一个分支,然后将原始特征分支重置为新分支: # from detached HEAD git branch new_feature gi
git checkout <commit_id>
git签出
对它做了一些修改
我现在处于超然状态
我想提交并将C3修改推到历史之上
C1->C2->C3->C4->C5(=C3修改)
最好的方法是什么?从当前分离的头部状态,您可以创建一个分支,然后将原始特征分支重置为新分支:
# from detached HEAD
git branch new_feature
git checkout feature
git reset --hard new_feature
git push --force origin feature
请注意,我们必须强制推送您的特性分支,因为我们已经重写了它的历史
但是,您也可以完全避免进入分离的头部状态,只需使用NUK键进行C4
提交,修改C3
提交,并添加其他提交:
# from feature
git reset --hard HEAD~1
# make changes to C3
git commit --amend
# make commits C4 and C5
git push --force origin feature
谢谢你的回答。在你的例子中,“特征”等于我的例子中的C4?对吗?否。
feature
是当前分支的名称。但所有提交(C1到C4)都已在同一分支上。对不起我的问题,我是新手!如果没有每个步骤的图表,我无法比上面解释得更清楚,而且我现在没有时间这样做(对于一个基本的Git问题来说,这将是太多的信息了);那(正如你正确地说的)是一个超然的头脑。如果您想“撤消”C4,您应该执行C4的git还原
,甚至将git重置
返回C3。另请参见-,