如何在Git上还原远程裸仓库

5
我已经完成了这个链接描述的过程:http://toroid.org/ams/git-website-howto。它非常好用,但现在我需要暂时将远程仓库(和检出)恢复到以前的状态。 我认为我只需要本地还原并推送(检出将正常工作),但不确定。 请注意,这不是一个最终的还原,只是暂时的(可以把它看作是我在应该之前推送了最新的更改到生产环境)。
2个回答

8
在您的本地仓库中使用git reset --mixed <commit>,然后使用git push --force推送到远程。您可能需要先隐藏未提交的更改。
git-reset手册中了解到:

--mixed

重置索引但不重置工作树(即保留已更改的文件,但不标记为提交),并报告未更新的内容。这是默认操作。


@filaruina 如果你想要一个所谓的“临时还原”,不要使用这个。 - KurzedMetal
@KurzedMetal 感谢您指出我的错误。我进行了一系列的测试,--mixed 似乎有预期的效果。 - user849425
它有效了,非常感谢!虽然我可能要补充一下,在 git push 中需要加上 -f。 - filaruina

3

重置本地主分支(假设你想恢复的是主分支)到之前的提交状态,并使用 -f 或 --force 强制推送到服务器上。

git reset --hard HEAD^
git push -f origin master

Reset --hard 不是临时的,它会改变工作树,而不是暂时性的更改。我使用了 --mixed 并且它起作用了。无论如何,git push 必须是 --force,否则它不会起作用,谢谢。 - filaruina
你的问题从未提到需要保持工作树不变。Reset --hard 可以是临时的,只要你不想重置未提交的更改。你总是可以通过重新设置 reset 来撤消重置。但当然,--mixed 是正确的选择。干杯! - ralphtheninja
抱歉,我应该更清楚地表达。希望我能选择两个答案作为接受的答案。无论如何,谢谢! - filaruina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接