Wie verwende ich Bitbucket und GitHub gleichzeitig für ein Projekt?

94

Ich habe ein Repository, das ich in Bitbucket und GitHub verschieben möchte. Es ist wichtig, dass mein Repository von beiden gehostet wird.

Gibt es eine Möglichkeit, dies in Git zu tun?

erogol
quelle
4
Dies scheint sehr nützlich zu sein. Besonders wenn ein Repository nicht verfügbar ist. Im Moment ist Bitbucket ausgefallen und ich bin im Grunde nicht in der Lage, meine Arbeit zu erledigen.
Imranal

Antworten:

117

Sie können mit git mehrere Remote-Repositorys verwenden. Aber Sie müssen, glaube ich, zwei Ihrer Fernbedienungen separat verwenden.

Wenn Ihr Projekt derzeit beispielsweise auf github verweist, können Sie Ihr aktuelles Remote-Repository in Folgendes umbenennen github:

$ git remote rename origin github

Sie können dann ein weiteres Remote-Repository hinzufügen, z. B bitbucket.:

$ git remote add bitbucket [email protected]:your_user/your_repo.git

Um Änderungen an der entsprechenden Verzweigung auf Github oder Bitbucket vorzunehmen, können Sie Folgendes tun:

$ git push github HEAD
$ git push bitbucket HEAD

Die gleiche Regel gilt für das Ziehen: Sie müssen angeben, von welcher Fernbedienung Sie ziehen möchten:

$ git pull github your_branch
$ git pull bitbucket your_branch
Denis Kniazhev
quelle
8
Hinweis für zukünftige Besucher: Ihre .ssh/configDatei ist der Schlüssel zum Erreichen dieses Setups. Fügen Sie ein Host github.comund ein hinzu, Host bitbucket.orgum zu identifizieren, welche IdentityFileverwendet werden sollen. Dann erhalten Sie keine Fehler, denen die Berechtigung verweigert wurde, wenn Sie versuchen, zwischen Bitbucket und Github hin und her zu wechseln. Hoffe das hilft jemandem.
Ultimater
31

Ja, das kannst du machen. Sie müssen nicht zweimal, sondern nur einmal pushen, um auf beide Remote-Repositorys zu pushen. Ich hatte das gleiche Problem zuvor und schrieb hier, wie es geht. Git: Push to / Pull von Github und Bitbucket

Kevin Lee
quelle
2
Guter Post! Es wäre gut, hier einen Sommer aufzunehmen, wenn Sie könnten.
OneHoopyFrood
28

Ein paar EINFACHE Lösungen.

Mehrere Fernbedienungen wurden unabhängig voneinander verschoben (und abgerufen)

Dies ist der einfachste Weg, um den Kopf herumzukriegen, aber der größte Aufwand, um ihn aufrechtzuerhalten.

Wir beginnen mit dem Hinzufügen unserer neuen Fernbedienung:

$ cd myproject 
$ git remote add bitbucket ssh://[email protected]/user/myproject.git 
$ git push bitbucket master

Einfach nein? Außer natürlich, dass wir jedes Mal, wenn wir Änderungen vornehmen, sowohl auf unseren ursprünglichen „Ursprung“ als auch auf unseren neuen entfernten „Bitbucket“ zurückgreifen müssen:

$ git push origin master
$ git push bitbucket master

Kein massiver Overhead, aber ich bin mir sicher, dass es mit der Zeit krachen wird. Oder Sie können einen Alias ​​gpob = "Git Push Origin Master & Git Push Bitbucket Master" erstellen.

Einzelne Fernbedienung mit mehreren URLs, die nacheinander verschoben (und abgerufen) werden

Mit dieser Methode fügen wir unserem vorhandenen Remote-Ursprung eine zusätzliche URL hinzu:

$ cd myproject
$ git remote set-url --add origin ssh://[email protected]/user/myproject.git
$ git push origin master
Everything up-to-date
Everything up-to-date

Viel weniger Aufwand!

Natürlich hat der Silberstreifen eine Wolke, und in diesem Fall können wir zwar gleichzeitig auf mehrere URLs pushen, aber nur vom ursprünglichen „Ursprung“ abrufen (Sie können dies ändern, aber das ist für diesen Beitrag nicht möglich ).

Um zu sehen, von welcher Fernbedienung abgerufen wird:

$ git remote -v show

Ich habe auch darüber gebloggt .

Ahmad Awais
quelle