Как исправить конфликт, когда принудительно меняются два репо и один конфликт - PullRequest
0 голосов
/ 13 июня 2018

У меня есть репозиторий с конфигурационным файлом, как показано ниже:

[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's и перенес их только на github.Я также внес некоторые изменения в bitbucket, и когда я нажимаю изменение, возникает конфликт с репозиторием github, но не возникает проблем с bitbucket.

В этом случае, как я могу получить изменения github и разрешить конфликт?

Я полагаю, что мой вопрос, возможно, будет задан где-то на SO, но я не могу его найти.Пожалуйста, дайте мне знать.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Для непосредственного случая добавьте удаленный

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, но я никогда не беспокоился, так как меня не волновала непосредственность и ожидание часа между синхронизациямибыло приемлемо для моего варианта использования.

Также не ясно, почему вы рассматриваете битбакет как основной, так как github - единственный, который может быть обновлен самостоятельно.

0 голосов
/ 13 июня 2018

Мое рабочее место блокирует bitbucket, но не имеет проблем с github.

Есть два способа решения этой проблемы.

Самый простой из них:попросите его добавить в белый список Bitbucket.Они, вероятно, не намеренно блокируют это.Либо они используют белый список, но его нет в списке, либо какой-то чрезмерный черный список нашел что-то, что он считает непослушным, в каком-то хранилище Bitbucket и занес в черный список весь домен.

Поскольку, к сожалению, высока вероятность того, что этого не произойдет,Техническое исправление состоит в том, чтобы пройти через брандмауэр с VPN или SSH туннелем .VPN является самым простым и очень полезным для многих ситуаций.Туннель SSH требует от вас запуска сервера ssh за пределами брандмауэра.Хотя, если ИТ-отдел действительно чрезмерно усердствует, они также заблокируют VPN и исходящий SSH.

Наконец, если вы можете использовать свой мобильный телефон в качестве точки доступа, вы можете использовать его подключение к Интернету.

Таким образом, я хочу иметь зеркальное репо на github, чтобы я мог сохранять изменения, пока я на работе.Мне также нравится, что все, что я изменяю в репозитории github, также легко попадает в репозиторий битбакета.Я думаю ты прав.Я испортил зеркальные вещи.

Если вы сделаете изменения в обоих, они «расходятся».Это управляемая ситуация, но вам придется управлять ими как отдельными пультами.Это не кажется необходимым для вашей ситуации.

Вместо этого решите, какое из них является зеркалом, и придерживайтесь его.Похоже, вы предпочитаете Bitbucket, поэтому используйте Github в качестве зеркала.Вместо двух pushurls, установите Bitbucket как pushurl и Github как mirror.Затем, когда вы push что-либо на Github будете перезаписаны вашей локальной версией.

Из документации git-push ...

-mirror

Вместо того, чтобы называть каждый ref для push, указывает, что все refs в refs / (которые включают в себя, но не ограничиваются refs / heads, refs / remotes /, и refs / tags /) будут отражены вудаленный репозиторий.Вновь созданные локальные ссылки будут отправлены на удаленный конец, локально обновленные ссылки будут принудительно обновлены на удаленном конце, а удаленные ссылки будут удалены с удаленного конца. Это значение по умолчанию, если опция конфигурации удалена. .mirror установлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...