我正在为项目升级。在进行更改之前,我忘了创建一个新的分支。
我已多次提交:
原创 - >提交 - >提交 - >提交 - >现在
现在需要为原始副本修复一个紧急错误,所以我想根据原始副本修改它。我在想如果我恢复变革,所有的工作都可能会丢失。它还记得变化吗?
答案 0 :(得分:4)
我会执行以下操作,假设master
现在指向now
,并且您希望将master
指向original
。
// Make sure you are on master, thus looking at 'now'
git checkout master
// Make a new branch pointing at 'now'
git branch new_feature
// Reset 'master' back 4 commits to 'original'.
git reset --hard HEAD~4
这会让主人回到你想要的地方,你可以用你的修复程序进行新的提交。然后,您可以通过git checkout new_feature
继续处理新功能。然后检查您的功能是否准备就绪,您可以将其合并回主人。
一般情况下,您不希望因为这个原因在master上开发新功能,所以虽然您可以立即将新功能合并到master中,但我建议您git checkout new_feature
并继续工作直到在你合并之前就完成了。
答案 1 :(得分:2)
这是你能做的。首先,建立一个指向当前工作的新分支:
git branch project_upgrade
(如果您有任何未提交的更改,请在之前提交。)
然后,当您仍在master
分支上时,请继续并重置为您的更改之前:
git reset --hard <SHA of original commit>
这将重置您的master
分支,但让project_upgrade
分支指向您的原始作品。 (因为这会重置所有文件,所以确保在分支之前没有未提交的更改非常重要,这样您的所有升级工作都将保存在您所创建的分支所指向的提交中。)
然后修复你的错误。之后,您可以将升级工作合并到:
git merge project_upgrade