如何在同时推送更改为两个repos并且发生冲突时修复冲突

时间:2018-06-13 02:40:28

标签: git

我有一个包含以下配置文件的存储库:

[remote "origin"]
        url = git@bitbucket.org:abc/abc.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        pushurl = https://github.com/abc/abc-mirror
        pushurl = git@bitbucket.org:abc/abc.git

github的回购是bitbucket的镜像。我对github进行了一些更改并将其推送到github。我也对bitbucket进行了一些更改,当我推动更改时,与github的repo存在冲突,但bitbucket没有问题。

在这种情况下,我如何获取github的更改并解决冲突?

我相信我的问题可能会在某处被问到,但我找不到。请告诉我。

提前致谢。

2 个答案:

答案 0 :(得分:0)

  

我的工作场所阻止了bitbucket,但github没有问题。

有两种方法可以解决这个问题。

最简单的是社交:要求IT将Bitbucket列入白名单。他们可能并没有故意阻止它。他们要么使用白名单,要么没有使用白名单,或者某些过分热心的黑名单在某些Bitbucket存储库中发现它认为是顽皮的东西并将整个域名列入黑名单。

由于很可能没有发生这种情况,因此技术方面的解决方法是使用VPNSSH tunnel来通过防火墙。 VPN是最简单的,在许多情况下非常有用。 SSH隧道要求您在防火墙外部运行ssh服务器。虽然如果IT真的过于热心,他们也会阻止VPN和传出SSH。

最后,如果您可以将手机用作热点,则可以使用其互联网连接。

  

因此,我希望在github上有一个镜像回购,以便我可以保留   我工作时的变化。我也喜欢我在github上所做的改变   repo也很容易进入bitbucket的回购。我认为你是对的。一世   把镜子搞砸了。

如果你对两者都进行了更改,他们将会发生差异"分歧"。这是一种可管理的情况,但您必须将它们作为单独的遥控器进行管理。对你的情况来说,这似乎并不合适。

相反,决定哪一个是镜子并坚持下去。听起来你更喜欢Bitbucket,所以使用Github作为镜子。将Bitbucket设置为pushurl而将Github设置为mirror,而不是有两个pushurls。然后,当您push Github上的任何内容都将被您的本地版本覆盖。

From the git-push docs ...

  

- 镜

     

而不是命名每个引用推送,指定refs /下的所有引用(              包括但不限于refs / heads /,refs / remotes /,refs / tags /)              镜像到远程存储库。新推出的本地参考将被推送到              远程端,本地更新的refs将在远程端强制更新,              已删除的引用将从远程端删除。 这是默认值              配置选项remote。< remote> .mirror已设置。

答案 1 :(得分:0)

对于紧急情况,请添加远程

git remote add github https://github.com/abc/abc-mirror

然后使用git fetch github,然后使用任何常用的冲突解决方法(git merge github/mastergit rebase github/master)。您可以使用git pull的适当参数一步完成,但我发现单独执行每个步骤要容易得多。

从长远来看......我认为做镜像(或构建等)的最佳方法是让一些服务器在一个裸仓库中使用cronjob进行git fetch github && git push bitbucket ...或者可能使用github&# 39; s通知挂钩,但我从不打扰,因为我不关心即时性,在同步之间等待一小时对我的用例是可以接受的。

它还不清楚为什么你将bitbucket作为主要处理器,因为github是唯一一个可以自行更新的。

相关问题