Ich arbeite an einem Projekt basierend auf CakePHP, das auf GitHub gehostet wird. Mein Projekt wird gehostet auf Bitbucket. Beide benutzen git . Grundsätzlich würde ich gerne eine 'Fork' erstellen (ich weiß nicht, ob ich die richtigen Begriffe verwende, da ich neu in git bin ) von CakePHP in meinem Bitbucket-Repository, um die Updates zu erhalten, ohne dass das gesamte CakePHP Zip/tar heruntergeladen und der Ordner ersetzt werden muss.
Es ist heute nicht möglich, eine "Pull-Anfrage" über verschiedene Websites zu senden. Ich habe eine Feature-Anfrage dazu im Bitbucket Issue Tracker hinzugefügt: # 3288 . Ich schlage vor, dass Sie sich selbst als Follower hinzufügen, wenn Sie dies verfolgen möchten.
Sie können den Quellcode jedoch weiterhin von GitHub nach Bitbucket verschieben, ohne Zip-Dateien oder Tarballs herunterladen zu müssen. Sie erstellen einen Klon von GitHub und Push to Bitbucket:
$ git clone https://github.com/cakephp/cakephp
$ cd cakephp
$ git Push [email protected]:mg/cakephp.git master
Ich erschuf mg/cakephp
zuerst als leeres Git-Repository in Bitbucket. Auf diese Weise können Sie Changesets von GitHub nach Bitbucket verschieben/ziehen.
Der folgende Workflow fügt das Github-Repository als neue Remote mit dem Namen sync
und die Bitbucket-Remote als Origin
hinzu. Es wird auch ein Zweig namens github
hinzugefügt, um das Github-Repository zu verfolgen, und ein Zweig namens master
, um das Bitbucket-Repository zu verfolgen. Es wird davon ausgegangen, dass Sie ein Bitbucket-Repository mit dem Namen "myrepository" haben, das leer ist.
# setup local repo
mkdir myrepository
cd myrepository
git init
# add bitbucket remote as "Origin"
git remote add Origin ssh://[email protected]/aleemb/myrepository.git
# add github remote as "sync"
git remote add sync https://github.com/aleemb/laravel.git
# verify remotes
git remote -v
# should show fetch/Push for "Origin" and "sync" remotes
# first pull from github using the "sync" remote
git pull sync
# setup local "github" branch to track "sync" remote's "master" branch
git branch --track github sync/master
# switch to the new branch
git checkout github
# create new master branched out of github branch
git checkout -b master
# Push local "master" branch to "Origin" remote (bitbucket)
git Push -u Origin master
Jetzt sollte der lokale Zweig github
den Zweig master
des Github-Repos verfolgen. Außerdem sollte der lokale Zweig master
das Bitbucket-Repository nachverfolgen (standardmäßig der Zweig master
).
Dies macht es einfach, einen Pull für den Zweig github
auszuführen und diese Änderungen dann in den Zweig master
einzufügen (Rebase wird jedoch gegenüber Merge bevorzugt). Anschließend können Sie den Zweig master
verschieben. Zweig (wird es zu Bitbucket schieben).
Wenn Sie Ihr Repo auf dem neuesten Stand halten möchten, verwenden Sie zwei Fernbedienungen: Github (upstream
) und Bitbucket (Origin
):
# Clone original CakePHP source code from Github
git clone --mirror https://github.com/cakephp/cakephp
cd cakephp
# Rename remote from `Origin` to `upstream`
git remote rename Origin upstream
# Add your Bitbucket repo (this is where your code will be pushed)
git remote add Origin https://bitbucket/your/repo.git
# Push everything to Bitbucket
git Push --mirror Origin
So rufen Sie Updates für CakePHP von Github ab:
git pull upstream master
So verschieben Sie Ihre Codeänderungen in Bitbucket:
git Push Origin master
Wenn Sie ein neues Repository in BitBucket erstellen, klicken Sie oben rechts auf die Schaltfläche Import repository
. Geben Sie die https-URL ein, die Sie gefunden haben, wenn Sie in Github auf Clone or download
Für das zu teilende Repository klicken.
Geben Sie Ihrem Repository einen Namen, konfigurieren Sie Ihre Datenschutzeinstellungen und los geht's!
Ich nehme an, Sie möchten einfach das Repository mit Ihrem Projekt herunterladen ... und Sie werden NICHT das cakePHP beisteuern, richtig?
in diesem Fall müssen Sie Ihrem Repo lediglich einen externen Verweis hinzufügen.
SVN: externe Äquivalente in GIT?
Und später, auch wenn Sie zu cakePHP beitragen möchten, können Sie dies einfach beim ursprünglichen Repo tun.