Man muss bedenken, dass es verschiedene Arten von Zweigen ist:
- (Rein) lokale Zweige, dh Zweigen Sie zu begehen,
- Branchen, die in einem Remote-Repository leben, aus Mangel an einem besseren Begriff. Sie können das Remote-Repository unter einem Remote-Namen wie
origin
kennen. Aus der Sicht dieses Repositorys ist ein solcher Zweig jedoch lokal. Willkommen bei der verteilten Versionskontrolle! :)
- Fernüberwachung Filialen. Auch einfach Remote-Filialen genannt, wie in der Pro Git book, aber ich finde diesen Satz verwirrend; Remote-Tracking-Zweig ist genauer. Sie sind spezielle lokale Zweigstellen, deren einziger Zweck darin besteht, den Status Zweige zu reflektieren, die zum Zeitpunkt Ihrer letzten Kommunikation mit dem Server in einem Remote-Repository leben. Insbesondere können Sie keine Zweige dieses Typs festlegen. Hier
, branch_name
ist ein lokaler Zweig, während origin/branch_name
ist eine Fernverfolgung Zweig; es spiegelt den Zustand des entsprechenden -Zweigs wider, der in origin
lebt.
Gleich nach
git fetch
die Fernverfolgung Zweig origin/master
läuft und die entsprechenden Zweig, der in origin
leben sollte perfekt synchron sein.Es sollte nicht überraschen, dann sein, dass
git push origin origin/branch_name
der nichts drücken: Sie im Wesentlichen zu schieben Sachen versucht, die in der Herkunft des entsprechenden Zweig bereits vorhanden ist, die in origin
leben.
Allerdings, wenn Ihr lokalen Zweig, branch_name
, voraus durch eine oder mehrere Commits ist,
dann läuft
git push origin branch_name
werden die Commits in branch_name
enthalten schieben, aber nicht in der Branche, die in origin
leben:
wo kommt github in dieses Spiel? 'git' erlaubt viele entfernte Server und github ist nur eine davon. –