Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在没有重写历史的情况下,在git中带回和上一次提交_Git_Git Branch - Fatal编程技术网

在没有重写历史的情况下,在git中带回和上一次提交

在没有重写历史的情况下,在git中带回和上一次提交,git,git-branch,Git,Git Branch,假设我正在处理一个分支“devel”,我想从几个提交中恢复“devel”的状态,而不覆盖中间的提交。有谁能帮我找到一个相对简单的方法吗?你总是可以git checkout上一次提交,将提交状态保存到你的工作副本中。然后将其交回回购协议。类似于git checkout的东西--.从回购协议的根目录就可以做到这一点。此语法不更新HEAD,只更新您的索引和工作副本。您可以执行git checkout-b newbranch commit,即git commit-b new HEAD~5(或者向gitk

假设我正在处理一个分支“devel”,我想从几个提交中恢复“devel”的状态,而不覆盖中间的提交。有谁能帮我找到一个相对简单的方法吗?

你总是可以
git checkout
上一次提交,将提交状态保存到你的工作副本中。然后将其交回回购协议。类似于
git checkout的东西--.
从回购协议的根目录就可以做到这一点。此语法不更新
HEAD
,只更新您的索引和工作副本。

您可以执行
git checkout-b newbranch commit
,即
git commit-b new HEAD~5
(或者向
gitk
询问提交的SHA2)。因此,您将在给定的点开始一个新分支


请注意,
git checkout commit
将您置于“分离头”状态,您处于提交位置,但它在空间中浮动,未连接。在此状态下所做的更改不会集成到存储库中。

但一旦我签出宝贵的提交,我就在另一个分支上了。如何将该工作返回到原始分支?有关git checkout手册页中要执行的操作,请参阅我的编辑以获取正确版本的
checkout
:“更新工作树中的文件以匹配索引或指定树中的版本。如果没有给出任何路径,git checkout还将更新HEAD以将指定的分支设置为当前分支。因此,只有在没有像我在示例中所做的那样包含路径的情况下,才会终止分离