Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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,星期天晚了,我犯了一个严重的错误。我提交并直接推送到主分支,在那里我应该创建一个分支,并将更改推送到新分支 因此,我可以执行一个git revert SHA来用一个新的提交还原上一次提交 但是我的改变怎么样,我不想失去它们 我是否应该从已经修改的主分支创建一个分支,如git checkout-b功能,然后恢复主分支 但,一旦我将该特性合并回主程序,它会知道该提交以前在主程序上被还原并消除它吗git合并功能 顺便说一句,没有历史重写的问题,因为我是这个项目唯一的开发人员。因此,我会考虑一个硬复位,

星期天晚了,我犯了一个严重的错误。我提交并直接推送到主分支,在那里我应该创建一个分支,并将更改推送到新分支

因此,我可以执行一个
git revert SHA
来用一个新的提交还原上一次提交

但是我的改变怎么样,我不想失去它们

我是否应该从已经修改的主分支创建一个分支,如
git checkout-b功能
,然后恢复主分支

但,一旦我将该特性合并回主程序,它会知道该提交以前在主程序上被还原并消除它吗<代码>git合并功能

顺便说一句,没有历史重写的问题,因为我是这个项目唯一的开发人员。因此,我会考虑一个硬复位,如果它是更好的选择。
感谢您的建议

如果您是唯一的开发人员,那么您可以进行硬重置。如果
abc123
是意外提交的SHA1,则执行以下操作:

git checkout master
git branch feature-branch
git reset --hard abc123^
这将使您的新提交保持在新的
功能分支
分支中(尚未切换到该新分支),然后将
master
倒回上一次提交。然后,您可以使用
git push-f origin master
推送已更正的
master
分支