2010-02-11 7 views
10

Ich arbeite mit einem Git Repo, der einen leeren Master und mehrere Zweige hat. Wenn ich einen git pull mache, scheint es nur Sachen für den Meister zu ziehen, aber nicht für die Zweige.Wie bekomme ich git um Änderungen für alle Zweige zu ziehen

Ich finde mich git checkout branch; git pull für jeden Zweig zu tun, bevor ich drücken kann. Gibt es einen Befehl oder einen Schalter, den ich verwenden kann, der

zieht und Änderungen an allen Zweigen und Master anwendet?

+0

Wenn Sie ziehen, holt es alle Zweige in ihre lokalen Kopien (das Zeug unter Fernbedienungen/Herkunft/...), so dass Sie nicht wirklich jedes Mal "git pull" ausführen müssen, nur Zweig wechseln und tun git merge Ursprung/Zweig. – ebneter

+0

möglich duplicate von [Kann "git pull --all" alle meine lokalen Niederlassungen aktualisieren?] (Http://stackoverflow.com/questions/4318161/can-git-pull-all-update-all-my-local-branches) – Chronial

Antwort

7

Ich denke, es gibt keinen verfügbaren Befehl oder Schalter aufgrund dessen, was git pull tut - sie holt sich von Remote (wie git fetch) und sie verschmilzt Änderungen an Ihrem aktuellen Zweig (git merge origin/master oder was auch immer Ihre aktuelle Verzweigungsspuren). Das Problem ist nicht der erste Teil (eigentlich git fetch holt Änderungen für alle entfernten Zweige) aber zusammenführen - was sollte getan werden, wenn Sie Zusammenführungskonflikte haben? Sie können nur auf Arbeitskopie, nicht auf Git-Objekten zusammenführen. Und wenn Sie mit dem Zusammenführen beginnen, müssen Sie es abbrechen oder alle Konflikte lösen und Zusammenführungs-Commits erstellen.

+0

+1. Es wäre natürlich trivial, ein Skript dafür zu schreiben. – ebneter

4

Ihr Problem ist nicht mit git pull es ist mit git push. Versuchen Sie git Einrichtung nur auf den Zweig drücken Sie den Stromzweig verfolgt (falls zutreffend):

git config --global push.default tracking 

In der Zwischenzeit Sie sind der Lage zu schieben, wann immer Sie wollen, aber Sie werden Ablehnung Hinweise für bekommen Zweige, die beim Drücken nicht vorspulen würden. Das sind ziemlich oft Zweige, an denen Sie nicht arbeiten, also kümmern Sie sich nicht darum.

Die obige Konfiguration gibt Ihnen ein etwas vernünftigeres Verhalten, wenn Sie nicht angeben, was zu drücken ist.

+0

Schön! Ich war mir der Konfigurationsoption push.default nicht bewusst. Die Handbuchseite für Git-Push bietet eine alternative, aber ähnliche Lösung: git config remote.origin.push HEAD –

Verwandte Themen