4

我正在为一个项目进行升级。在进行更改之前,我忘记创建一个新分支。

我曾多次承诺:

原始 -> 提交 -> 提交 -> 提交 -> 现在

现在原版有个BUG急需修复,所以想在原版的基础上进行修改。我在想,如果我恢复更改,所有工作可能都会丢失。它还记得变化吗?

4

2 回答 2

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

这将使 master 回到您想要的位置,您可以通过修复它进行新的提交。然后,您可以通过执行来继续开发您的新功能git checkout new_feature。然后检查您的功能是否准备就绪,您可以将其合并回主控。

通常,出于这个原因,您通常不想在 master 上开发新功能,因此虽然您可以立即将新功能合并回 master,但我建议您git checkout new_feature在合并之前继续在那里工作,直到完成。

于 2013-02-20T07:43:39.943 回答
2

这是你可以做的。首先,创建一个指向您当前工作的新分支:

git branch project_upgrade

(如果您有任何未提交的更改,请在执行之前提交它们。)

然后,当仍在您的master分支上时,继续并重置回您的更改之前:

git reset --hard <SHA of original commit>

这将重置您的master分支,但让project_upgrade分支指向您的原始工作。(因为这将重置所有文件,所以确保在分支之前没有未提交的更改非常重要,这样您的所有升级工作都将保存在您所做的分支指向的提交中。)

然后做你的错误修复。之后,您可以将升级工作重新合并到:

git merge project_upgrade
于 2013-02-20T07:44:11.257 回答