如何将Git存储库回滚(重置)到特定的提交?


How do you roll back (reset) a Git repository to a particular commit?

本问题已经有最佳答案,请猛点这里访问。

我克隆了一个Git存储库,然后在开发过程的早期尝试将其回滚到特定的提交。在那之后添加到存储库中的所有内容对我来说都不重要,所以我想忽略本地源代码中所有随后的更改。

但是,当我尝试在GUI工具中回滚时,它不会更新我的本地文件系统-我最终总是得到项目的最新源代码。

在项目的历史记录中,从特定提交中获取存储库的源代码并忽略所有后续更新的正确方法是什么?


1
git reset --hard <tag/branch/commit id>

注:

  • 没有--hard选择重写历史,但不重写文件。工作树上的文件也被复制。信用用户

  • 如果你想让国家如此遥远的休息点回到滚动背面的话:git push -f


更新:

因为改变了跟踪分支是如何创建的,所以我没有再建议重命名分支。This is what I recommend now:

在当前状态下复制分支机构:

ZZU1

指挥官会把你留在你的电流支架上

复制这个网站码到您的网站上以设置一个投票箱在您的网站上。

1
git reset --hard c2e7af2b51

用你想回去的样子

当你决定你的疯狂实验分支不包含任何有用的东西时

1
git branch -D crazyexperiment

当你开始与历史调节GIT命令(Reset,Rebase)在你离开他们之前创建后排分支时,总是很好的。也许有一天你会感到舒服但你不需要如果你以你不想要的方式改变你的故事,并没有创建一个后台,你可以看看git reflog。即使没有树枝或标记指向他们,也要保持周围的距离。

原始答案:

方法是创建一个新的分支机构。让我们假设你在masterBranch和你想回到c2e7af2b51

重命名你的现任主计长

1
git branch -m crazyexperiment

检查你的好消息

1
git checkout c2e7af2b51

在这里做你的新主人

1
git checkout -b master

现在,如果你想看的话,你周围还有你的疯狂实验,但是你的主人公会在你最后一个知道的好点,准备加入。如果你真的想远离你的实验

1
git branch -D crazyexperiment


对于那些带吉他的人,你也可以用吉他。

右点击你想要回到并选择"复位主分行在这里"。然后从下一个菜单中选择硬的。


当你说"GUI工具"时,我假定你是用GIT来窗户的。

重要的是,如果你还没有做好准备,我会建议成立一个新的分支。当你测试出你的变化时,你的主人也能保持原样。

你需要回到原来的样子,就像你在你的视野的右侧有着历史一样。然后你会注意到你有所有不想要的文件,就像左边一样。现在你需要右点击所有未知文件上的灰色标题,选择不同的标题。这将使您的档案返回到这个版本。