【问题标题】:git switch and come back to/from an older stategit 切换并返回/返回旧状态
【发布时间】:2014-08-25 09:55:17
【问题描述】:

我需要切换到较旧的提交以检查我们程序的较旧功能,该功能后来已被删除。

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

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) 你最初是怎么想到367af0345d0b09ab3ade1c7856462f68e5eafe86 的? (2) 如果您尝试git branch --contains 367af0345d0b09ab3ade1c7856462f68e5eafe86git tag --contains 367af0345d0b09ab3ade1c7856462f68e5eafe86,是否其中任何一个打印一些东西?警告意味着至少branch --contains 输出必须为空...
  • 我在 github 上以图形方式提出了这个提交哈希。两个git分支return * master`和git标签输出为空。
  • 那很奇怪:如果 367af03... 包含在 master 中,git checkout 不应该抱怨,应该只是说它正在移动到 master 并且之前的 HEAD 是在那个 SHA-1 处分离。

标签: git git-checkout revert


【解决方案1】:

你检查了一个修订版,git 肯定告诉你:

您处于“分离 HEAD”状态。你可以环顾四周,做实验 更改并提交它们,您可以丢弃您在此所做的任何提交 在不影响任何分支的情况下执行另一次结帐。

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

git checkout -b new_branch_name

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

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

做什么取决于你需要什么:

  • 如果您只是想检查一些东西,那么一切都很好。悬空提交将由git gc 清理
  • 如果您需要提交(例如,如果 367af0 指向您的软件的已发布版本,并且您正在为这个旧版本创建修复程序),那么您应该按照 git 告诉您的操作:检查一个新分支,该分支包含这些修复

对于未来,如果你只是想在某个版本上玩转,直接在git checkout <REVISION> 之后,做一个git checkout -b tmp_playing_around 或类似的东西,以避免分离头状态的问题。

【讨论】:

  • Mmmmh 检查分离的 HEAD 后,我对代码进行了一些修改,但没有提交任何内容。根据我的历史,我所做的是隐藏和提交一些东西而不将更改推送到服务器,并且仅在此之后检出分离的 HEAD。这可能是我得到这个的原因吗?
猜你喜欢
  • 2017-12-04
  • 1970-01-01
  • 2017-12-14
  • 2013-01-05
  • 2012-10-22
  • 1970-01-01
  • 2020-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多