将我的github fork回滚到之前的提交

时间:2011-06-13 12:58:41

标签: git github

我在github上分享了一个repo,我现在想把我的fork回滚到一个已知的提交。我可以使用

在本地获取正确的文件

git reset --hard HEAD~1

但接着是什么?

我怎样才能提交该版本?我是add所有当前文件到暂存区域,然后是commitpush吗?

编辑: 或者我真的需要一个分支?基本上,我最初分叉的repo的HEAD使用了一些我不能依赖的新依赖项,因此我想从该repo中获取代码并在提交历史中将其全部移回X天。我希望新回滚的代码可以在github上使用,所以我可以将它作为Gem包含在我的Rails 3应用程序中。

这是否更好,有人可以告诉我如何做

2 个答案:

答案 0 :(得分:7)

重置后你必须强行推动:

git push origin +master

但是,如果存储库是公共的,则强制推送到先前的提交不是一个好主意。

如果您不想重置本地存储库,但希望公共存储库返回提交,请使用像master~1:master这样的refspec:

git push origin +master~1:master

在您的方案中可以使用包含不包含依赖项的提交的分支。例如,将分支的名称视为without_dependencies

git branch without_dependencies master~1
git push origin without_dependencies

每个人都能看到这个新分支并开展工作。

答案 1 :(得分:1)

另一个解决方案是(在本地重置之后)git pull -s ours origin master将丢弃合并中的所有更改,使结果成为本地HEAD,但保留历史记录。你有一个糟糕的提交坐在那里,但你可以继续git push等,你通常会如何。