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 的 repo 是 bitbucket 的镜像。我对 github 进行了一些更改,并将其推送到 github 上。我还对 bitbucket 进行了一些更改,当我推送更改时,与 github 的 repo 存在冲突,但 bitbucket 没有问题。
在这种情况下,如何获取 github 的更改并解决冲突?
我相信我的问题可能会在 SO 的某个地方被问到,但我找不到。请告诉我。
提前致谢。
解决方案
我的工作场所阻止了 bitbucket,但对 github 没有任何问题。
有两种方法可以解决这个问题。
最简单的是社交:要求 IT 将 Bitbucket 列入白名单。他们可能不是故意阻止它。要么他们正在使用白名单,但它不在其中,要么是一些过分热心的黑名单在某些 Bitbucket 存储库中发现了一些它认为不合适的东西,并将整个域列入黑名单。
不幸的是,这种情况很可能不会发生,因此技术解决方法是使用VPN或SSH 隧道通过防火墙。VPN 最简单,在许多情况下都非常有用。SSH 隧道要求您在防火墙外运行 ssh 服务器。尽管如果 IT 真的过于热心,他们也会阻止 VPN 和传出 SSH。
最后,如果您可以将手机用作热点,则可以使用其互联网连接。
因此,我想在 github 上有一个镜像仓库,这样我就可以在工作时保持更改。我也喜欢我在 github 的 repo 上所做的任何更改也很容易进入 bitbucket 的 repo。我觉得你是对的。我把镜子的东西弄乱了。
如果您对两者进行更改,它们将“发散”。这是一种可管理的情况,但您必须将它们作为单独的遥控器进行管理。对于您的情况,这似乎没有必要。
相反,决定哪一个是镜子并坚持下去。听起来你更喜欢 Bitbucket,所以使用 Github 作为镜像。与其有两个 pushurl,不如将 Bitbucket 设置pushurl
为mirror
. 然后当你push
在 Github 上的任何东西都会被你的本地版本覆盖。
- 镜子
不是命名要推送的每个 ref,而是指定将 refs/ 下的所有 refs(包括但不限于 refs/heads/、refs/remotes/ 和 refs/tags/)镜像到远程存储库。新创建的本地 refs 会被推送到远端,本地更新的 refs 会在远端强制更新,删除的 refs 会从远端移除。如果设置了配置选项 remote.<remote>.mirror,这是默认设置。
推荐阅读
- java - 将 Json 对象映射到 POJO 时处理未知的 Json 属性
- javascript - 如何在 app.run 中注销 $rootScope.$on
- angular - Karma - Jasmine 无法解析 Ionic 应用程序中的打字稿路径
- apache-kafka-connect - 如何更改“kafka connect”组件端口?
- azure - 在 HTTP 请求中找到的 MAC 签名与从 azure 服务器计算的不同
- scala - 传递 MultipartFormData.FilePart 的结果值
- gnuplot - Gnuplot:抑制警告
- git - 仅当除 master 之外的所有分支都有推送的 TAG 时,Gitlab 才会触发 Pipeline
- epoch - 使用 strptime 解析微秒纪元时间
- sql - 如何在 SQL 中制作计算器?