Как использовать 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

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

Ахмад Авайс
источник