git reset无法更改磁头

git reset无法更改磁头,git,Git,我在工作树上有什么 * 63a7b9f 2017-08-21 | temp commit (HEAD) [Jiaxiang Liang] * ad8d3f2 2017-08-19 | adding gitignore [Jiaxiang Liang] * a562db1 2016-03-31 | revert to correct bugfix [Y. Yan] * 3b24fd4 2016-03-31 | old src old test [Y. Yan] * f9b4935 2016-03-

我在工作树上有什么

* 63a7b9f 2017-08-21 | temp commit (HEAD) [Jiaxiang Liang]
* ad8d3f2 2017-08-19 | adding gitignore [Jiaxiang Liang]
* a562db1 2016-03-31 | revert to correct bugfix [Y. Yan]
* 3b24fd4 2016-03-31 | old src old test [Y. Yan]
* f9b4935 2016-03-31 | old src new test [Y. Yan]
* 6bf6585 2016-03-31 | new src new test [Y. Yan]
* 71209a6 2016-03-31 | new src old test [Y. Yan]
* 3114478 2016-03-15 | bugfix: anti-flow for push pop and peek [Y. Yan]
我想做的是删除commit
63a7b9f
并将头部移动到
ad8d3f2
。我不关心
63a7b9f
中的任何内容。所以我做了

git reset --hard ad8d3f2
HEAD is now at ad8d3f2 adding gitignore
它似乎删除了提交,但我有一个问题困扰着我:

git status

HEAD detached from 63a7b9f
nothing to commit, working directory clean
所以我想知道为什么头不动。我确实希望头部指向
ad8d3f2
。我想要一些类似于git重置后的内容:

git status
HEAD detached at ad8d3f2
解决方案:所以建议使用branch的答案给了我一些解决问题的想法。请注意,我忘了提到所有提交都处于状态
HEAD detached at


在这之后,我得到了我想要的状态。

git reset--硬盘头^1怎么样?

git reset--硬盘头^1怎么样?

从上拆下的输出
硬盘头是基于
硬盘头的反射,而不是其当前值。这可以说是一个bug,但这并不意味着你现在的头脑与以前不同了


具体地说,一旦拆下
磁头
,就没有要重置的分支。使用
git reset--hard
只需设置索引和工作树,同时将
HEAD
设置为该提交,就像您执行了另一个
git checkout-f
一样<代码>头部保持分离状态;只有
git checkout
,对于一些有效的分支名称
,才会重新连接
头从
分离的输出
头基于
头的reflog,而不是其当前值。这可以说是一个bug,但这并不意味着你现在的头脑与以前不同了


具体地说,一旦拆下
磁头
,就没有要重置的分支。使用
git reset--hard
只需设置索引和工作树,同时将
HEAD
设置为该提交,就像您执行了另一个
git checkout-f
一样<代码>头部保持分离状态;只有
git checkout
,对于某些有效的分支名称
,才会重新附加您的

查看您的工作树,似乎您想删除上次提交。这里有几个选项,其中一些包括:

  • git reset同时移动
    指针。你可以用它来做这个

    git reset --hard HEAD^
    
    这会将
    头重设为上次提交之前的提交,或者在工作树中,重设提交
    ad8d3f2

  • git checkout ad8d3f2 .
    
  • git checkout到一个新分支,从第二个到最后一个提交分支
    ad8d3f2

    git checkout ad8d3f2 .
    
    命令末尾的
    将对整个工作树应用
    ad8d3f2
    更改。如果在上次提交时添加了文件,则可能会遇到一些问题,因为此方法不会删除这些文件

  • 另一方面,git revert将删除上次提交时添加的文件

    git revert --no-edit HEAD^
    
    如果您不想重写提交历史记录,或者如果您已经推送到远程repo并且不想强制推送,那么这也是一个很好的选择。相反,它将创建一个“还原”提交


查看您的工作树,似乎您想删除上次提交。这里有几个选项,其中一些包括:

  • git reset同时移动
    指针。你可以用它来做这个

    git reset --hard HEAD^
    
    这会将
    头重设为上次提交之前的提交,或者在工作树中,重设提交
    ad8d3f2

  • git checkout ad8d3f2 .
    
  • git checkout到一个新分支,从第二个到最后一个提交分支
    ad8d3f2

    git checkout ad8d3f2 .
    
    命令末尾的
    将对整个工作树应用
    ad8d3f2
    更改。如果在上次提交时添加了文件,则可能会遇到一些问题,因为此方法不会删除这些文件

  • 另一方面,git revert将删除上次提交时添加的文件

    git revert --no-edit HEAD^
    
    如果您不想重写提交历史记录,或者如果您已经推送到远程repo并且不想强制推送,那么这也是一个很好的选择。相反,它将创建一个“还原”提交


执行此命令之前,请使用
git签出您的分支机构目标分支机构名称
执行此命令之前,请使用
git签出您的分支机构目标分支机构名称