git switch并返回旧州

时间:2014-08-25 09:55:18

标签: git git-checkout revert

我需要切换到较旧的提交来检查我之后删除的程序的旧功能。

为此我检查了相应的提交:

git checkout 367af0345d0b09ab3ade1c7856462f68e5eafe86

然后我更改了一些关于这个已弃用的功能的代码。但这只是为了检查我想忽略所有这些。

现在验证已经完成我想回到最新的工作代码:

git checkout master

但不幸的是,我收到了一个听起来很糟糕的警告:

git checkout master
Checking out files: 100% (281/281), done.
Warning: you are leaving 183 commits behind, not connected to
any of your branches:

  367af03 message
  e5eee29 message
  6999d77 message
 ... and 179 more.

If you want to keep them by creating a new branch, this may be a good time
to do so with:

 git branch new_branch_name 367af0345d0b09ab3ade1c7856462f68e5eafe86

Switched to branch 'master'

确实我想保留最后183次提交,但我不想创建一个新的分支,只是回到我暂时恢复之前的状态......

事情是,现在这些183次提交实际存在于我的代码中,因此它们并没有像警告所示那样丢失。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

你查了一个版本,git肯定告诉你:

  

你处于分离头部'州。你可以环顾四周,做实验   更改并提交它们,您可以放弃您在此中提交的任何提交   通过执行另一次结账而不影响任何分支的状态。

     

如果您想创建一个新分支以保留您创建的提交,您可以   通过再次使用-b和checkout命令来执行此操作(现在或稍后)。例如:

     

git checkout -b new_branch_name

然后,你在这个分离的HEAD 状态下做了一些提交,这些提交在任何分支上都没有。

然后,您再次签出master,将这些提交放在后面。

做什么取决于您的需求:

  • 如果你只想检查一下,那么一切都很好。悬挂的提交将由git gc
  • 清理
  • 如果您需要提交(例如,如果367af0指向您的软件的已发布版本并且您正在为此旧版本创建修复),那么您应该执行git告诉您的操作:查看新分支持有这些修复

对于将来,如果您只想在git checkout <REVISION>之后直接使用某个版本,请执行git checkout -b tmp_playing_around或类似的操作,以避免分离头状态出现问题。