我将我的仓库Git merged feklee-node放入我的仓库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/
然后,我在仓库 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存储库的浏览器选项卡。它显示了上面的哈希。
答案 0 :(得分:1)
为了撤消提交使用
git revert
仅推入子树应如下所示:
git subtree push --prefix=my/folder subtree_origin master