从“吉特手册”:
git签出--detach准备在上面工作,方法是在上面分离头(请参阅“分离头”部分),并更新工作树中的索引和文件。保存对工作树中的文件的本地修改,以便生成的工作树将是在提交中记录的状态加上本地修改。
似乎只有一个选择:头分离。我可以指定一个不让头分离的选项吗?
升级1我在"Revert Git repo to a previous commit“的评论中问了一个类似的问题
# To get just one, you could use `rebase -i` to squash them afterwards
# Or, you could do it manually (be sure to do this at top level of the repo)
# get your index and work tree into the desired state, without changing HEAD:
git checkout 0d1d7fc32 .
# Then commit. Be sure and write a good message describing what you just did
git commit
我对他的问题是:@Jefromi,在"git结账0d1d7fc32“之后,头已经分离了吗?那么“吉特犯”就不能用悬垂的脑袋做任何事。 要查看当前目录中0d1d7fc32中的状态,请将其保留在原处。这与使用git签出其他分支路径/to/ file一样,这将使您留在当前的分支中,只需查看给定的文件。在这种情况下,我们将签出整个当前目录,而不仅仅是一个文件,但仍然没有更改头。-杰弗罗米
因此,我们似乎可以通过添加“”来让头不附加。
从下面的答案和评论中更新2,我认为一个很好的方法是: git重置--难。
但现在我的问题是:杰弗罗米的方法正确吗?
git checkout 0d1d7fc32 .
git commit
有关他的方法的更多细节,请参阅上面的链接。
发布于 2015-11-11 09:37:46
如果您想签出一个不是任何分支的最后一个提交的提交,那么根本不可能在同时让HEAD
引用一个分支的同时检查它。
您可以创建或更新一个分支以指向该特定提交,如使用git checkout
的-b
选项(或使用-B
覆盖现有分支)的注释中所示,或者如果您已经在希望指向该特定提交的分支上,则可以更新它并同时使用git reset --hard <commit>
签出。
发布于 2015-11-11 09:35:01
如果您想签出给定的提交散列而不与HEAD分离,则可以将其分配给一个新分支。只需将-b <newbranch>
添加到git checkout
命令的末尾(将<newbranch>
替换为新分支的名称)
git checkout <hash> -b mynewbranch
发布于 2015-11-11 09:31:43
如果您想以分支模式签出,并且您知道它已经位于分支的顶端,那么您需要首先识别这个分支的名称(使用"git显示--装饰“):
git show --decorate <commit>
例如,我电脑上的"git显示-装饰85d3204“告诉我,"85d3204”位于“我的分支”的顶端:
commit 85d3204cd5c081abce3329729691fd9e056dcc19 (MY-BRANCH)
因此,要以分支模式签出此提交(假设我想继续开发“我的分支”),我将遵循以下内容:
git checkout MY-BRANCH
https://stackoverflow.com/questions/33656072
复制