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]
我想做的是删除commit63a7b9f
并将头部移动到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签出您的分支机构目标分支机构名称