如何回滚存储库的提交以及文件更改,以便它们不会显示在拉取请求中?

时间:2012-04-25 03:10:29

标签: git github

所以我开始使用Git,我觉得我做错了。

我正在尝试回滚到我的分支上的某个提交,将所有提交历史记录和它们的更改删除回到那一点。我已经尝试了所有我能找到的东西,并且没有什么区别。我需要向项目提出拉取请求,但它包括我所做的所有提交,以及大量的合并提交。其他所有人都没有和我一样多的提交,所以我相信我做错了。

我想要恢复的唯一真正原因是因为我提出的WIP提交我不希望包含在请求中,所以我想在此之前开始清理。

提前致谢。

2 个答案:

答案 0 :(得分:0)

使用git reset --hard尽可能地返回,然后提交,最后推送新版本。 (当您按下以覆盖远程分支时,您需要使用--force标志。)

尽量不要养成这样做的习惯,因为如果有人实际上对你推动的分支做了些什么,那么覆盖它会让他们有自己的问题需要解决。

答案 1 :(得分:0)

git reset --hard <commit_id>将努力做到你想要的。如果您没有shell访问权限(即它是github repo等),您在客户端框上执行相同操作,然后git push -f强制推送。通常,如果目标的当前HEAD不是新HEAD的祖先,则推送将失败。

但是如果你这样做,要非常清楚任何克隆或拉动旧HEAD的人都会感到非常困惑:他们未来的失败会因合并失败而死亡,他们会永远恨你。重写历史应该永远是最后的手段。