如果我在没有创建分支的情况下查看源代码的标记版本,Git 会指示我根本不与任何分支关联。不过,很高兴让我进行更改并检查它们。这些变化去哪里了?如果我切换回“master”,它们就会消失(被 master 中的内容覆盖),而且我似乎无法再次找到它们。是什么赋予了?如果 Git 允许我针对本质上是匿名的分支提交更改,我肯定可以取回它们吗?
因为你的提交不在任何分支上,除非您使用其 SHA1 签出该特定提交,否则您无法在工作目录中看到它。您可以通过查看来找到提交reflog
它跟踪您从存储库中签出的内容的更改。如果你的标签是XXX
你会看到类似的东西:
$ git reflog
7a30fd7... HEAD@{0}: checkout: moving from master to XXX
ddf751d... HEAD@{1}: checkout: moving from 96c3b0300ccf16b64efc260c21c85ba9030f2e3a to master
96c3b03... HEAD@{2}: commit: example commit on tag XXX, not on any branch
7a30fd7... HEAD@{3}: checkout: moving from master to XXX
这告诉你你必须的 SHA1checkout
为了在工作目录中查看您的提交。
$ git checkout 96c3b03
Note: moving to "96c3b03" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
git checkout -b <new_branch_name>
HEAD is now at 96c3b03... example commit on tag XXX, not on any branch
$ git checkout -b newbranch
$ git branch #lists all branches
feature1
master
* newbranch
一开始这一切对我来说有点奇怪,直到我意识到 gitcheckout
放置所有项目文件截至特定提交进入我的文件系统(工作目录)。实际上,工作目录充当本地 Git 存储库上的浏览器。所以您的更改尚未被覆盖在存储库中,当您签出母版时,它们只是没有显示在您的工作目录中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)