Wie kann man von einer lokalen Niederlassung in eine andere „ziehen“?

231

Das klingt so einfach, aber ich kann es einfach nicht herausfinden. Ich habe vor einiger Zeit einen experimentellen Zweig erstellt, und jetzt möchte ich alle Änderungen übernehmen, die seit meiner Erstellung am Master vorgenommen wurden. Das ist alles lokal. Ich möchte vom lokalen Master in die lokale my_branch ziehen, kann dies aber nicht. Dies scheint nicht zu funktionieren und sagt mir, dass Master kein Git-Repository ist:

git pull master
Phil Kulak
quelle
Siehe auch stackoverflow.com/questions/3124601/…
Michael Freidgeim

Antworten:

338

Sie müssen git mitteilen, woher es ziehen soll, in diesem Fall aus dem aktuellen Verzeichnis / Repository:

git pull . master

Wenn Sie jedoch lokal arbeiten, rufen Sie normalerweise nur die Zusammenführung auf (ziehen Sie intern die Zusammenführung):

git merge master
stricken
quelle
1
Ich mag es, git pull . masterweil ich denke, es wird prüfen, ob es auch etwas Neues vom Ursprung gibt. Ist das wahr?
Josiah Yoder
1
@JosiahYoder nein, pull .weist Git ausdrücklich an, aus dem Repository zu ziehen, das sich unter .(dh dem aktuellen Verzeichnis / Repository) befindet. originist nur eine Abkürzung für "welchen Repository-Speicherort auch immer in der .git/configDatei definiert ist (normalerweise automatisch eingerichtet, wenn ein Repository
geklont wird
1
Oh! So git pull . masterwürde aus dem lokalen Repository zieht statt Ursprung? (Fetch Keine von Herkunft !?) Gibt es einen Vorteil , git pull . masterüber git merge masterdann?
Josiah Yoder
2
@JosiahYoder ja genau, es würde aus dem lokalen Repository anstelle des Ursprungs-Repositorys "ziehen". Es wird nicht abgerufen (da alles aus dem lokalen Repository bereits vorhanden ist!). Es gibt keinen Vorteil - beide Befehle machen mehr oder weniger dasselbe. Wenn Sie einen schnellen Vorlauf durchführen, können Sie push . origin/branch:branchlokale Zweige verwenden (nicht ziehen), ohne sie vorher auszuchecken.
Knittl
Ich preise dich. Durch die Kraft von Greyskull!
R Claven
45

Was Sie suchen, ist das Zusammenführen.

git merge master

Mit pullrufen Sie Änderungen aus einem Remote-Repository ab und führen sie in den aktuellen Zweig ein.

KingCrunch
quelle
38

Ziemlich alter Beitrag, aber es könnte jemandem helfen, der neu in Git ist.

Ich werde mitgehen

git rebase master
  • viel sauberer Protokollverlauf und keine Zusammenführungs-Commits (wenn richtig gemacht)
  • müssen mit Konflikten umgehen, aber es ist nicht so schwierig.
Lukino
quelle
1
Es gibt sicherlich viele Möglichkeiten für ein Entwicklungsteam, seine Verzweigungsprozesse zu verwalten. Persönlich benutze ich Git seit 8 Jahren und musste nie neu gründen. Ich verwende immer Merge und es hat immer meine Bedürfnisse erfüllt. Sicherlich können beim Rebase genau wie beim Zusammenführen Szenarien auftreten, in denen git nicht automatisch über das richtige Ergebnis des "Zusammenführens" zweier Änderungssätze entscheiden kann. In Bezug auf den Punkt, den Sie über einen "saubereren" Commit-Verlauf gemacht haben. Persönlich ist es meine Präferenz, den gesamten
Festschreibungsverlauf
-1

Wenn Sie nach einem brandneuen Pull aus einer anderen Branche suchen, z. B. von Local zu Master, können Sie diesem folgen.

git commit -m "Initial Commit"
git add .
git pull --rebase git_url
git push origin master
theRana
quelle