如何将公共 Git 存储库恢复到特定的先前提交?
Posted
技术标签:
【中文标题】如何将公共 Git 存储库恢复到特定的先前提交?【英文标题】:How to Revert Public Git Repo to Specific Previous Commit? 【发布时间】:2019-10-30 01:53:54 【问题描述】:我想将我最近克隆的公共回购恢复到一年前的以前版本。我不想进行硬还原。
我已经试过了:
cd MyRepo
git revert --no-commit dc3b4359..
但是我收到了这个错误:
error: could not revert dc3b4359...
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
我是这方面的新手;什么代码可以用来安全地做到这一点?提前致谢。
【问题讨论】:
“硬还原”是什么意思?存储库中的文件应该如何处理,历史记录应该如何处理? 这不是错误。这是conflict。但作为旁注,恢复大量这样的提交似乎是一个不必要的负担。你为什么排除硬重置(我猜你的意思是硬重置,因为硬恢复是没有意义的) 您尝试还原单个提交。 Git 通过追加更改来做到这一点,这与 dc3b4359 正好相反。该更改与之后发生的其他提交冲突。 @StijnHaezebrouck 关于revert
行为的一般观点是正确的,但 OP 的命令不会恢复 single 提交。它会还原整个范围(注意双点)。
@RomainValeri 你当然是对的,忽略了那些
【参考方案1】:
(已编辑)(感谢@torek)
最粗暴的方法是:
cd MyRepo
git rm -r .
git checkout dc3b4359 -- .
git add .
git commit -m "Going back in time"
git push origin master
原答案:
cd MyRepo
rm -rf * # if you have files starting with '.', delete them too.
git checkout dc3b4359 -- .
git add .
git commit -m "Going back in time"
【讨论】:
有时最好使用git rm
这样您就不会打扰未跟踪的文件,但是是的,该方法可以在本地存储库中使用;然后,OP 将需要 git push
生成的提交。以上是关于如何将公共 Git 存储库恢复到特定的先前提交?的主要内容,如果未能解决你的问题,请参考以下文章