给定一个git分支,其中有一些提交(C是最近提交的):
A -> B -> C如何重置工作区,使所有文件都处于提交B状态,但HEAD仍处于C状态?
我看过git-reset,但这些选项似乎都没有帮助。手册页显示,所有不同的模式都会移动:
-软件根本不触及索引文件或工作树(但重置头部,就像所有模式一样)。
我已经试过git reset HEAD~了,但这让我动脑筋。
发布于 2016-10-17 20:45:46
git checkout [-p|--patch] [<tree-ish>] [--] <pathspec>...git checkout with <paths>或--patch用于从索引中将修改或删除的路径还原到原始内容,或者用命名<tree-ish>的内容替换路径(通常是提交)。
因此,您需要在存储库的根上运行此操作(对于任何子树或文件也很好):
git checkout HEAD~ -- .这将导致git应用必要的更改将文件还原为HEAD~状态,这些更改将出现在索引中。
发布于 2016-10-17 20:44:42
您可以使用硬重置和软重置的组合:
git reset --hard B
git reset --soft C第一种方法是将HEAD移动到B,并使所有文件看起来像B。然后,第二个文件将其移回C,而不更改任何文件。
该方法的优点是您没有处于分离状态,而且B和C之间的所有差异都将显示为上一次实际提交的逆差。你还会在原来的树枝上。
您可能必须将C指定为SHA-1而不是参考名称,除非您为此目的专门创建了一个名称。
发布于 2016-10-17 20:44:22
只需使用git checkout
$ git checkout HEAD~
$ # Or
$ git checkout HEAD^
$ # Or
$ git checkout B这将使您进入一个独立的头部状态,其中的头是脱离一个分支。
https://stackoverflow.com/questions/40095142
复制相似问题