我在github上分享了一个repo,我现在想把我的fork回滚到一个已知的提交。我可以使用
在本地获取正确的文件 git reset --hard HEAD~1
但接着是什么?
我怎样才能提交该版本?我是add
所有当前文件到暂存区域,然后是commit
和push
吗?
编辑:
或者我真的需要一个分支?基本上,我最初分叉的repo的HEAD
使用了一些我不能依赖的新依赖项,因此我想从该repo中获取代码并在提交历史中将其全部移回X天。我希望新回滚的代码可以在github上使用,所以我可以将它作为Gem包含在我的Rails 3应用程序中。
这是否更好,有人可以告诉我如何做那?
答案 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
等,你通常会如何。