Git可以吗?
问题描述:
我希望我的git repo处于特定提交状态。一旦回购处于该状态,我希望能够推送到Github,使遥控器处于该状态。我知道我可以拨打git checkout <commit hash>
,我的本地回购将会处于特定提交的状态,但它不会让您推。Git可以吗?
我猜我应该做些什么git checkout
但我不知道该怎么做。
感谢这个简单问题的任何帮助:)
答
使用git reset --hard <commit>
重置回购到一个特定的提交。
这将使您失去工作目录更改并在commit
之后执行任何提交。您仍然可以从git reflog
获取较新的提交,然后在这些提交中使用git reset
。
此外,如果您已经推送了其他提交,则必须避免在没有提交的情况下推送到远程。
答
你需要强制推动,因为你将失去历史。
git push -f origin master
这将强制推送您的更改。如果您试图撤销某些内容,则可能需要考虑git revert
,因为它可以让您保留历史记录。
好的谢谢。我决定反对'git revert',因为它在当前提交和我想提交的时间之间存在很大的差异。 – icnhzabot 2011-05-21 23:22:54
为什么?还原是可以恢复的。失去的历史不是。 – vcsjones 2011-05-21 23:50:18
我认为'git revert'是正确的方法,但OP将不得不恢复HEAD和目标提交之间的每个单独提交,对吧?除非有另一种方式直接使用单个git命令来完成此操作。 – Jeet 2011-05-22 00:21:31