为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Git
海绵宝宝撒 2019-11-04 14:24:13
我克隆了一个Git存储库,然后尝试在开发过程的早期将其回滚到特定的提交。在那之后,添加到存储库中的所有内容对我来说都不重要,因此我想忽略本地源代码中的所有后续更改。但是,当我尝试在GUI工具中回滚时,它不会更新本地文件系统-我总是最终获得该项目的最新源代码。从项目历史记录中的特定提交中获取仓库资源并忽略所有以后的更新的正确方法是什么?
查看完整描述

3 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

更新:

由于对跟踪分支的创建和推送方式进行了更改,因此我不再建议重命名分支。这是我现在建议的内容:


复制分支的当前状态:


git branch crazyexperiment

(该git branch <name>命令将使您的当前分支仍处于检出状态。)


使用以下命令将当前分支重置为所需的提交git reset:


git reset --hard c2e7af2b51

(替换c2e7af2b51为您要返回的提交。)


当您确定疯狂的实验分支不包含任何有用的内容时,可以使用以下方法将其删除:


git branch -D crazyexperiment

当您开始使用历史记录修改git命令(重置,重新设置基准)以在运行备份分支之前创建备份分支时,它总是很好。最终,一旦您感到舒适,就不会觉得有必要。如果您确实以不需要的方式修改历史记录,并且尚未创建备份分支,请查看git reflog。即使没有分支或标记指向它们,Git也会使提交保持一段时间。


原始答案:

与该git reset --hard方法相比,一种更不那么恐怖的方法是创建一个新分支。假设您在master分支上,并且要返回的提交是c2e7af2b51。


重命名当前的master分支:


git branch -m crazyexperiment

查看您的良好承诺:


git checkout c2e7af2b51

在这里建立新的master分支:


git checkout -b master

现在,如果您以后要查看它,您仍然可以进行疯狂的实验,但是您的master分支又回到了您的最后一个已知的好时机,随时可以添加。如果您确实想放弃实验,可以使用:


git branch -D crazyexperiment


查看完整回答
反对 回复 2019-11-04
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

当您说“ GUI工具”时,我假设您正在使用Windows的Git。


重要提示,我强烈建议您创建一个新分支(如果尚未执行此操作)。这样,在测试变更时,您的主人可以保持不变。


使用GUI,您需要像在视图右侧的历史一样“回退此提交”。然后,您会注意到您已将所有不需要的文件作为更改提交到左侧。现在,您需要右键单击所有未提交的文件上方的灰色标题,然后选择“忽略更改”。这会将您的文件恢复为该版本的文件。


查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 1221 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信