使用 git 将代码推送到多个仓库

使用 git 将代码推送到多个仓库

起因

    起初,在 GitHub 建了一个仓库,200+ 的 commits 。后来(终于在眼泪中明白。。。误🙃),在 Gitee 建了一个仓库,复制了一份代码,之后没在管 GitHub,Gitee 上又随之进行了30+ 次 commits,这是前景。最后为了省劲,要用 git 将 Gitee 的代码一次推送到两个仓库。方法如下,因为我只要 push 上去就好了,不需要分别来 pull 远端的仓库,只是我写着玩的小项目,我将 .git 文件下的 config 作了如下修改:

[core]
	repositoryformatversion = 0
	filemode = false
	bare = false
	logallrefupdates = true
	symlinks = false
	ignorecase = true
[remote "origin"]
	url = https://gitee.com/xxxx/xxx.git
	fetch = +refs/heads/*:refs/remotes/origin/*
+ [remote "all"]
+	url = https://gitee.com/xxx/xxx.git
+	url = https://gitHub.com/xxx/xxx.git
[branch "master"]
	remote = origin
	merge = refs/heads/master

    这样我只需要 git push all 就可以同时 将原来只在 Gitee 仓库的代码 pushGitHub 仓库了。当然了执行这个操作,代码成功 pushGitee,但要求先要 pull GitHub 上的仓库,才能 push 上去,(pull 是不可能 pull 的,这辈子只能 push 这样子。。。),所以我选择强推,一顿操作猛如狗

git push all -f

回车一敲(大力出奇迹!),ok,办了! 打开 GitHub,GitHub 仓库原来的所有 commits 全没了,同步为 Gitee 仓库一样的 30+ commits!

学习一番


百度挺好。


彪悍!!!



I love my motherland!

--force

  • --force 适用于所有推送的 ref ,因此在 push.default 设置为 matching 或配置了多个推送目标的情况下使用它remote.*.push 可能会覆盖当前分支以外的其他 ref(包括严格位于其远程副本后面的本地ref)。
  • 常见情况,当您尝试推送时,您可能会遇到非快进拒绝,即使您将其推送到其他人都没有推送到的存储库中也是有可能的。自己推送提交 A 之后(在本节的第一张图片中),将其替换为 git commit --amend 以生成提交 B ,然后尝试将其推出,因为忘记了您已经将 A 退出了。在这种情况下,并且仅当您确定在此期间没有人提取了较早的提交 A(并开始在其上构建)时,才可以运行 git push --force 来覆盖它。换句话说,git push --force 是一种保留方法,用于您确实要失去历史记录的情况。

解决办法

如果不幸遇到类似情况需要恢复,请参考这篇 文章 吧!

posted @ 2020-01-17 16:04  guangzan  阅读(3408)  评论(0编辑  收藏  举报