我正在为一个项目进行升级。在进行更改之前,我忘记创建一个新分支。
我曾多次承诺:
原始 -> 提交 -> 提交 -> 提交 -> 现在
现在原版有个BUG急需修复,所以想在原版的基础上进行修改。我在想,如果我恢复更改,所有工作可能都会丢失。它还记得变化吗?
我正在为一个项目进行升级。在进行更改之前,我忘记创建一个新分支。
我曾多次承诺:
原始 -> 提交 -> 提交 -> 提交 -> 现在
现在原版有个BUG急需修复,所以想在原版的基础上进行修改。我在想,如果我恢复更改,所有工作可能都会丢失。它还记得变化吗?
我会执行以下操作,假设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
这将使 master 回到您想要的位置,您可以通过修复它进行新的提交。然后,您可以通过执行来继续开发您的新功能git checkout new_feature
。然后检查您的功能是否准备就绪,您可以将其合并回主控。
通常,出于这个原因,您通常不想在 master 上开发新功能,因此虽然您可以立即将新功能合并回 master,但我建议您git checkout new_feature
在合并之前继续在那里工作,直到完成。
这是你可以做的。首先,创建一个指向您当前工作的新分支:
git branch project_upgrade
(如果您有任何未提交的更改,请在执行之前提交它们。)
然后,当仍在您的master
分支上时,继续并重置回您的更改之前:
git reset --hard <SHA of original commit>
这将重置您的master
分支,但让project_upgrade
分支指向您的原始工作。(因为这将重置所有文件,所以确保在分支之前没有未提交的更改非常重要,这样您的所有升级工作都将保存在您所做的分支指向的提交中。)
然后做你的错误修复。之后,您可以将升级工作重新合并到:
git merge project_upgrade