Как использовать Bitbucket и GitHub одновременно для одного проекта?


95

У меня есть один репозиторий, который я хочу разместить в Bitbucket и GitHub. Жизненно важно, чтобы мой репозиторий размещался на обоих серверах.

Есть ли способ сделать это в Git?


4
Это кажется очень полезным. Особенно когда не работает один репозиторий. В настоящий момент bitbucket не работает, и я практически не могу выполнять свою работу.
— imranal

Ответы:


120

Вы можете использовать несколько удаленных репозиториев с помощью git. Но я думаю, вам придется вставлять отдельно в два пульта.

Например, если ваш проект в настоящее время указывает на github, вы можете переименовать текущий удаленный репозиторий в github:

$ git remote rename origin github

Затем вы можете добавить еще один удаленный репозиторий, например bitbucket:

$ git remote add bitbucket git@bitbucket.org:your_user/your_repo.git

Теперь, чтобы внести изменения в соответствующую ветку на github или bitbucket, вы можете сделать это:

$ git push github HEAD
$ git push bitbucket HEAD

То же правило применяется к вытягиванию: вам нужно указать, с какого пульта вы хотите получить:

$ git pull github your_branch
$ git pull bitbucket your_branch

9
Обратите внимание на будущие посетители, ваш .ssh/configфайл - ключ к достижению этой настройки. Добавьте a Host github.comи a Host bitbucket.org, чтобы определить, что IdentityFileиспользовать. Тогда вы не получите ошибок, связанных с отказом в разрешении, при попытке переключаться между bitbucket и github. Надеюсь, это кому-то поможет.
— Ultimater

31

Да, ты можешь это сделать. Вам не нужно нажимать дважды, а только один раз, чтобы отправить в оба удаленных репозитория. У меня была такая же проблема раньше, поэтому я написал, как это сделать здесь. Git: Push to / Pull из Github и Bitbucket


2
Хороший пост! Если бы вы могли, было бы хорошо включить сюда летнее описание.
— OneHoopyFrood

28

Несколько ЛЕГКИХ решений.

Независимое нажатие (и извлечение) нескольких пультов дистанционного управления

Это легче всего понять, но требует больше усилий для поддержания.

Начнем с добавления нашего нового пульта ДУ:

$ cd myproject 
$ git remote add bitbucket ssh://git@bitbucket.org/user/myproject.git 
$ git push bitbucket master

Сразу нет? За исключением, конечно, каждого случая, когда мы фиксируем какие-либо изменения, нам нужно нажимать как на наш исходный «origin», так и на наш новый удаленный «bitbucket»:

$ git push origin master
$ git push bitbucket master

Не огромные накладные расходы, но я уверен, что со временем он надоест. Или вы можете создать ʻalias gpob = "git push origin master && git push bitbucket master".

Единый пульт с несколькими последовательно отправленными (и полученными) URL-адресами

С помощью этого метода мы собираемся добавить дополнительный URL-адрес к существующему удаленному «источнику»:

$ cd myproject
$ git remote set-url --add origin ssh://git@bitbucket.org/user/myproject.git
$ git push origin master
Everything up-to-date
Everything up-to-date

Намного меньше усилий!

Конечно, у серебряной подкладки есть облако, и в данном случае дело в том, что, хотя мы можем передавать несколько URL-адресов одновременно, мы можем извлекать только из исходного «источника» (вы можете изменить это, но это выходит за рамки данной публикации. ).

Наконец, чтобы увидеть, какой пульт будет извлечен из:

$ git remote -v show

Я тоже писал об этом в блоге .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.