Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何在旧提交上提交更改将其置于历史之上_Git - Fatal编程技术网

Git 如何在旧提交上提交更改将其置于历史之上

Git 如何在旧提交上提交更改将其置于历史之上,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

我有几个提交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
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。另请参见-,