在没有重写历史的情况下,在git中带回和上一次提交
假设我正在处理一个分支“devel”,我想从几个提交中恢复“devel”的状态,而不覆盖中间的提交。有谁能帮我找到一个相对简单的方法吗?你总是可以在没有重写历史的情况下,在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
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以将指定的分支设置为当前分支。因此,只有在没有像我在示例中所做的那样包含路径的情况下,才会终止分离