如何使用Git暂时移除最后一次提交?

10
假设我有以下git提交记录:
  1. aaaaaa
  2. bbbbbb
  3. cccccc(最新的)
我想回到 bbbbbb 并从那里继续开发。本质上,我想暂时删除 cccccc,并能够在未来检索它(我知道我仍然需要 cccccc)。我应该还原 cccccc,还是回滚到 bbbbbb

这是用于私有 Git 仓库的。 - moey
3个回答

8

只需要执行

git branch for_later
git reset --hard bbbbbb

当然,如果cccccc已经被推送,请不要这样做。在这种情况下,请使用revert。

你的意思是推送到 GitHub 吗? - moey
@Siku-Siku.Com - 是的,可以分享给其他人的任何中央仓库。 - manojlds

8

只需执行:

git checkout -b dev_on_b bbbbbbb

这将使分支仅包含 cccccc,并为您提供一个从 bbbbbb 开始的新分支。当您想要返回使用 ccccc 时,可以执行以下任一操作:

git merge branch_with_cccccc          # bring cccccc into dev_on_b

或者

git checkout branch_with_ccccc

1

正确的解决方案取决于这是否是一个公共的git存储库。

如果您使用此命令git revert HEAD^,那么它将还原为(2),这可能是正确的事情。

但是,在您进行(4)并再次提交时合并更改时,您需要确保将其恢复回(3)。

您可能需要查看此内容,因为它将根据不同的情况讨论不同的选项: http://book.git-scm.com/4_undoing_in_git_-_reset,_checkout_and_revert.html


谢谢指点。实际上这是针对一个私有仓库,只有几个私人贡献者。 - moey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接