2011-05-21 98 views
0

我希望我的git repo处于特定提交状态。一旦回购处于该状态,我希望能够推送到Github,使遥控器处于该状态。我知道我可以拨打git checkout <commit hash>,我的本地回购将会处于特定提交的状态,但它不会让您推。Git可以吗?

我猜我应该做些什么git checkout但我不知道该怎么做。

感谢这个简单问题的任何帮助:)

回答

2

使用git reset --hard <commit>重置回购到一个特定的提交。

这将使您失去工作目录更改并在commit之后执行任何提交。您仍然可以从git reflog获取较新的提交,然后在这些提交中使用git reset

此外,如果您已经推送了其他提交,则必须避免在没有提交的情况下推送到远程。

3

你需要强制推动,因为你将失去历史。

git push -f origin master 

这将强制推送您的更改。如果您试图撤销某些内容,则可能需要考虑git revert,因为它可以让您保留历史记录。

+0

好的谢谢。我决定反对'git revert',因为它在当前提交和我想提交的时间之间存在很大的差异。 – icnhzabot 2011-05-21 23:22:54

+1

为什么?还原是可以恢复的。失去的历史不是。 – vcsjones 2011-05-21 23:50:18

+0

我认为'git revert'是正确的方法,但OP将不得不恢复HEAD和目标提交之间的每个单独提交,对吧?除非有另一种方式直接使用单个git命令来完成此操作。 – Jeet 2011-05-22 00:21:31