首页 > 解决方案 > subtree-remote 的 git push 推送了整个 repo,如何撤消?

问题描述

Git 将我的 repo feklee-node合并到我的 repo san中。命令

$ git remote add -f node git@github.com:feklee/feklee-node.git
$ git merge -s ours --no-commit --allow-unrelated-histories feklee-node/master
$ git read-tree --prefix=node/ -u node/master
$ git commit # done from Emacs Magit IIRC
$ mv node/ nodes/pcb/

然后我在 repo san中做了一些更改,我想将子树中的更改重新放入feklee-node。所以我做了(这显然是个坏主意):

$ git push node master # node = git@github.com:feklee/feklee-node.git

这将san的全部内容推入feklee-node。不好了!

我如何撤消这个巨大的 git push?

而且我想知道如何只推送子树。

更新

我恢复到旧的提交,重写历史:

$ git reset --hard 87b2d1aaea1c0a628c4725e2ea16682f344f102e
$ git push --force

在这里我很幸运,因为在大规模推送之前,我仍然打开了一个浏览器选项卡,其中包含 GitHub 存储库。它显示了上面的哈希。

标签: gitgithub

解决方案


为了撤消提交使用

git revert

仅推送到子树应该如下所示:

git subtree push --prefix=my/folder subtree_origin master

推荐阅读