当前位置:  开发笔记 > 运维 > 正文

Git提交没有分支的标记

如何解决《Git提交没有分支的标记》经验,为你挑选了3个好方法。

如果我在没有创建分支的情况下检查我的源代码的标记版本,Git表示我根本没有与任何分支相关联.我很高兴让我做出改变并检查它们.这些变化在哪里?如果我切换回'master',它们就会消失(被master中的东西覆盖),我似乎无法再找到它们.是什么赋予了?如果Git允许我对基本上是匿名分支的内容进行更改,那么我肯定可以取回它们吗?



1> Paul..:

因为您的提交不在任何分支上,所以除非您使用其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

这告诉你checkout为了在工作目录中看到你的提交你必须使用SHA1 .

$ 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 
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

这一切对我来说似乎有点奇怪,直到我意识到git checkout将所有项目文件作为特定提交放入我的文件系统(工作目录).实际上,工作目录充当本地Git存储库上的浏览器.因此,您的更改尚未在存储库中被覆盖,当您检出主服务器时,它们只是没有显示在您的工作目录中.



2> Dustin..:

是的,他们将在reflogs中.

您可以随时命名分支,如下所示:

git checkout -b my-branch-name



3> gjvis..:

或者,您可以通过查找其SHA1(使用上面的git reflog)将提交合并回master而不使用新分支,然后:

git checkout master
git merge SHA1

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有