我有一个包含以下配置文件的存储库:
[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的更改并解决冲突?
我相信我的问题可能会在某处被问到,但我找不到。请告诉我。
提前致谢。
答案 0 :(得分:0)
我的工作场所阻止了bitbucket,但github没有问题。
有两种方法可以解决这个问题。
最简单的是社交:要求IT将Bitbucket列入白名单。他们可能并没有故意阻止它。他们要么使用白名单,要么没有使用白名单,或者某些过分热心的黑名单在某些Bitbucket存储库中发现它认为是顽皮的东西并将整个域名列入黑名单。
由于很可能没有发生这种情况,因此技术方面的解决方法是使用VPN或SSH tunnel来通过防火墙。 VPN是最简单的,在许多情况下非常有用。 SSH隧道要求您在防火墙外部运行ssh服务器。虽然如果IT真的过于热心,他们也会阻止VPN和传出SSH。
最后,如果您可以将手机用作热点,则可以使用其互联网连接。
因此,我希望在github上有一个镜像回购,以便我可以保留 我工作时的变化。我也喜欢我在github上所做的改变 repo也很容易进入bitbucket的回购。我认为你是对的。一世 把镜子搞砸了。
如果你对两者都进行了更改,他们将会发生差异"分歧"。这是一种可管理的情况,但您必须将它们作为单独的遥控器进行管理。对你的情况来说,这似乎并不合适。
相反,决定哪一个是镜子并坚持下去。听起来你更喜欢Bitbucket,所以使用Github作为镜子。将Bitbucket设置为pushurl
而将Github设置为mirror
,而不是有两个pushurls。然后,当您push
Github上的任何内容都将被您的本地版本覆盖。
- 镜
而不是命名每个引用推送,指定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/master
或git rebase github/master
)。您可以使用git pull
的适当参数一步完成,但我发现单独执行每个步骤要容易得多。
从长远来看......我认为做镜像(或构建等)的最佳方法是让一些服务器在一个裸仓库中使用cronjob进行git fetch github && git push bitbucket
...或者可能使用github&# 39; s通知挂钩,但我从不打扰,因为我不关心即时性,在同步之间等待一小时对我的用例是可以接受的。
它还不清楚为什么你将bitbucket作为主要处理器,因为github是唯一一个可以自行更新的。