Git - 不小心推送到上游分支而不是我的分支

20

我是 Git 的新手。原本想将我的数据推送到我的分支,但不小心把它推到了远程的 master 分支。我想撤销那次推送,请问有什么办法吗?

非常感谢您的帮助。


我想你的意思是要将数据推送到你的 fork,而不是分支。 - Joe Phillips
可能是重复的问题:如何撤销上一次提交? - Jordan Parmer
3个回答

38

本地还原并推送您的还原

git revert <commit_id>
git push upstream/master

如果你正在与团队在上游仓库协作,那么这种方法比删除您的历史记录要好。如果你进行了强制重置和强制推送,可能会删除其他人提交的其他提交。最好只是回滚您的更改,并在团队历史记录中显示。


22
git checkout -b myfeaturebranch
git checkout master
git reset --hard HEAD~1
git push --force

它会执行以下操作:

  1. 创建一个包含你所做的提交的新本地分支
  2. 回到主分支
  3. 将提交指针重置为上一个提交
  4. 推送重置,从远程中删除该提交

这里的危险性在于,如果其他人从主分支拉取了这些提交,则这些提交将会丢失。在这种情况下,你需要使用 revert 而非 reset,以便将重置记录作为提交历史的一部分。

git checkout -b myfeaturebranch
git checkout master
git revert HEAD~1
git push

2
这对团队项目来说不是好事,你可能会删除其他人的提交。最好推送一个已撤销的提交。 - yelsayed
@YasserElsayed 同意。我已将其添加为注释。 - Jordan Parmer
我收到了错误信息:提交X是一个合并请求,但没有给出-m选项。 致命错误:还原失败。 - mononoke83
2
@mononoke83,我也是!我们很幸运能够得到这个错误,因为我们正在还原一个错误的提交!长话短说,最好使用:git revert <commit_id>而不是git revert HEAD~1 - Positive Navid

0

我遇到了和你一样的情况!

  1. git revert
  2. 从源代码树或其他地方取消选择的文件的暂存
  3. git reset --soft HEAD~1

这将把主分支的更改重置为工具中的树形结构。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接