2010-11-12 2 views
96

Ich habe ein Elternteil: project bis Child: this gespalten. Jetzt möchte ich mein Kind mit aktuellen Updates der Eltern aktualisieren. Kann ich das tun, wenn ja wie?Aktualisieren Sie meine Github Repo, die von einem anderen Projekt gegabelten ist

Wenn ich meinen Github Repo aktualisiere, kann ich einen "Git Pull" machen, um meinen lokalen Repo zu aktualisieren.

+0

Sie haben es rückwärts - Sie tun Ihre Arbeit in Ihrem lokalen Repo, und dann git push, um die Fernbedienung zu aktualisieren. – Cascabel

+10

Ja, das verstehe ich, aber es gibt nur wenige Änderungen im ursprünglichen Projekt, die ich in meine Arbeitskopie einbauen muss. Aus diesem Grund muss ich mein lokales Repository mit den Aktualisierungen des ursprünglichen Projekts aktualisieren, während die lokalen Codeänderungen unverändert bleiben. – zengr

+2

Genau das haben wir alle erklärt. Ich möchte nur darauf hinweisen, dass Sie den Github-Repo nicht aktualisieren, sondern ..., um Ihren lokalen Repo zu aktualisieren. - Sie aktualisieren den lokalen Repo und dann den Github-Repo. – Cascabel

Antwort

90

In Ihrem lokalen Klon des Kindes, von Eltern ziehen, es als Fernbedienung hinzufügen, wenn Sie mögen:

cd child 
git remote add parent <parent-url> 
git pull parent 

Die URL der Eltern sein könnte das öffentliche Github-Repo oder Ihr lokaler Klon - der lokale Klon wird natürlich schneller sein. Wenn Sie einen anderen Zweig als den aktuellen HEAD des übergeordneten Repos ziehen möchten, fügen Sie einfach ein Argument hinzu (z. B. git pull parent topic-branch). Wenn dies eine einmalige Sache ist, können Sie das Hinzufügen der Fernbedienung einfach überspringen: git pull <parent-url> [branch].

Ziehen ist eine Kombination aus Abrufen und Zusammenführen. Sobald Sie dies getan haben, haben Sie ein neues Zusammenführungs-Commit, das Sie vermutlich irgendwann wieder in Ihr öffentliches Repository verschieben möchten.

Der entscheidende Punkt hier, falls nicht klar ist, ist, dass das Ziehen aus dem übergeordneten (Upstream-) Repository nicht anders ist als das Ziehen von Ihrem öffentlichen Klon von Child, Ihrem aktuellen Repository. In jedem Fall rufen Sie ein Repository mit einem gemeinsamen Verlauf ab und fügen es in Ihren aktuellen Zweig ein. Und natürlich, da Sie zusammenführen, ist ein Arbeitsbaum erforderlich - das muss also in Ihrem lokalen Repo gemacht werden. Das auf github gehostete Repo ist im Wesentlichen eine Möglichkeit, das zu veröffentlichen, was Sie lokal getan haben. Alles, was Sie wirklich damit tun können, ist Push/Pull, und durchsuchen Sie, was dort ist.

+2

Ich habe eine Fehlermeldung erhalten "Sie haben gebeten, von der entfernten 'Herkunft' zu ziehen, aber keine Verzweigung angegeben. Da dies nicht die standardmäßig konfigurierte Remote für Ihre aktuelle Verzweigung ist, müssen Sie eine Verzweigung in der Befehlszeile festlegen, wenn ich "git pull elterned" verwendet habe. Sie können mit 'git pull parent master' schnell darüber hinweggehen. Dies ist nur eine Lösung, wenn Sie direkt in Ihrem Master-Zweig arbeiten oder nur einen Zweig haben oder keine Vorstellung davon haben, was ein Zweig ist und nur schnell zusammenführen möchten. Art der New-Bee-Lösung oder wenn Sie nur eine schnelle Lösung, um eine kleine Änderung einzuführen. –

12

Sie wollen:

git pull git://github.com/voldemort/voldemort.git

+0

Also, durch diesen Befehl wird meine lokale Repo aktualisiert werden, aber was ist mit meinem Kind Projekt auf GitHub? Ich werde das zu meinem GitHub-Kind schieben? – zengr

+0

@zenr: 'git pull' ist eine Kombination aus' git fetch' und 'git merge'.Es führt einen Zweig aus dem Remote-Repository in Ihren aktuellen Zweig ein. Genau wie bei jeder anderen Arbeit, die Sie in Ihrem lokalen Repository ausführen, drücken Sie es, um es zur Remote zu bringen. – Cascabel

+0

Wie andere empfohlen haben, 'git remote add eltern ', wie unterscheidet sich das von deiner appraoch von' git pull'? – zengr

15
  1. Clone Ihre Repo auf Ihrem lokalen Rechner, wenn Sie nicht bereits haben: git clone [email protected]:utkarsh2012/voldemort.git
  2. den Upstream als neues Fern hinzufügen: git remote add upstream git://github.com/voldemort/voldemort.git
  3. Mit Ihrem Zweig ausgecheckt, die stromaufwärts in Ihrer Filiale ziehen, Dadurch wird eine Zusammenführung zwischen den beiden Änderungssätzen erstellt: git pull upstream oder git pull upstream branch-to-merge. Wenn Sie an einem Zweig arbeiten, der nicht gepackt wurde, können Sie auch git fetch und git rebase verwenden, um Ihre Arbeit ohne eine Zusammenführung neu zu erstellen.
3

Dies kann auch einfach auf Web-Interface GitHub geschähe: Ausgabe einen Pull-Request aber tauscht die Basis Repo und Kopf Repo. Wenn das Ziehen automatisch ausgeführt werden kann, wird es sein.

+5

** Warnung ** Wenn Sie dies tun, fügt es ein Commit in Ihr gegabeltes Projekt ein. So enden Sie einen Commit vor dem übergeordneten Projekt. –

Verwandte Themen