[英]How do you roll back (reset) a Git repository to a particular commit? [duplicate]
这个问题在这里已有答案:
我克隆了一个Git存储库,然后尝试在开发过程的早期将其回滚到特定的提交。 在该点之后添加到存储库的所有内容对我来说都不重要,因此我想省略本地源代码中的所有后续更改。
但是,当我尝试回滚GUI工具时,它不会更新我的本地文件系统 - 我总是最终得到项目的最新源代码。
从项目历史中的特定提交中获取存储库的源代码的正确方法是什么,并省略所有后续更新?
由于更改跟踪分支的创建和推送方式,我不再建议重命名分支。 这就是我现在推荐的:
以当前状态制作分支的副本:
git branch crazyexperiment
( git branch <name>
命令将使您仍然检出当前分支。)
使用git reset
将当前分支重置为所需的提交:
git reset --hard c2e7af2b51
(将c2e7af2b51
替换为您要返回的提交。)
当您确定您的疯狂实验分支不包含任何有用的内容时,您可以使用以下命令将其删除:
git branch -D crazyexperiment
当您开始使用历史记录修改git命令(重置,rebase)以在运行它们之前创建备份分支时,总是很好。 最后一旦你感到舒服,你就不会觉得有必要。 如果您确实以您不想要的方式修改历史记录并且尚未创建备份分支,请查看git reflog
。 即使没有指向它们的分支或标签,Git也会保持一段时间的提交。
比git reset --hard
方法更难以实现的方法是创建一个新分支。 假设您在master
分支上,并且要返回的提交是c2e7af2b51
。
重命名当前的主分支:
git branch -m crazyexperiment
看看你的好承诺:
git checkout c2e7af2b51
在这里建立你的新主分支:
git checkout -b master
现在,如果您想稍后查看它,您仍然可以进行疯狂的实验,但是您的主分支又回到了您最后已知的优点,准备添加到。 如果您真的想丢弃实验,可以使用:
git branch -D crazyexperiment
对于那些有git gui弯曲的人,你也可以使用gitk。
右键单击要返回的提交,然后选择“将master branch重置为here”。 然后从下一个菜单中选择硬盘。
当你说'GUI工具'时,我假设你正在使用Git For Windows。
重要的是,如果你还没有,我强烈建议你创建一个新的分支。 这样,在测试更改时,您的主人可以保持不变。
使用GUI,您需要“回滚此提交”,就像您拥有视图右侧的历史记录一样。 然后您会注意到您将所有不需要的文件作为左侧提交的更改。 现在,您需要右键单击所有未提交文件上方的灰色标题,然后选择“忽略更改”。 这会将您的文件设置回这个版本中的文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.