2013-03-30 8 views
14

Ich verzweigte ein Repo von Github. Auf git remote -v tun es zeigt:Git zeigt nicht alle Zweige auf lokale

origin https://github.com/myusername/moodle.git (fetch) 
origin https://github.com/myusername/moodle.git (push) 
upstream https://github.com/moodle/moodle.git (fetch) 
upstream https://github.com/moodle/moodle.git (push) 

Die moodle.git etwa 10 Filialen hat, aber die Repo zeigt nur 2 von ihnen. Auf git branch -a tun (zeige alle Filialen) erhalte ich:

MOODLE_24_STABLE// just these two on local..how? 
* master// 
    origin/MOODLE_13_STABLE 
    origin/MOODLE_14_STABLE 
    origin/MOODLE_15_STABLE 
    origin/MOODLE_16_STABLE 
    origin/MOODLE_17_STABLE 
    origin/MOODLE_18_STABLE 
    origin/MOODLE_19_STABLE 
    origin/MOODLE_20_STABLE 
    origin/MOODLE_21_STABLE 
    origin/MOODLE_22_STABLE 
    origin/MOODLE_23_STABLE 
    origin/MOODLE_24_STABLE 
    origin/master 
    upstream/MOODLE_13_STABLE 
    upstream/MOODLE_14_STABLE 
    upstream/MOODLE_15_STABLE 
    upstream/MOODLE_16_STABLE 
    upstream/MOODLE_17_STABLE 
    upstream/MOODLE_18_STABLE 
    upstream/MOODLE_19_STABLE 
    upstream/MOODLE_20_STABLE 
    upstream/MOODLE_21_STABLE 
    upstream/MOODLE_22_STABLE 
    upstream/MOODLE_23_STABLE 
    upstream/MOODLE_24_STABLE 
    upstream/master 

Wie löse ich mein Problem ohne Verlust von Daten oder Unregelmäßigkeiten?

+3

Warum würden Sie mehr lokale Niederlassungen erwarten? Nach dem Klonen eines Repositorys gibt es nur einen lokalen Master-Zweig. Andere Zweige werden auf Anfrage erstellt. – knittl

+0

@ Knittl: Okay. Das wusste ich nicht. Würdest du mir bitte Anweisungen geben, wie es geht? Ich habe eine Verzweigung say 'git checkout -b STABLE_23_STABLE' erstellt, aber die Dateien sind nicht die dieser Verzweigung. – xan

+1

'git checkout -b MOODLE_23_STABLE' erstellt einen neuen Zweig des aktuellen Commits, so dass Sie immer noch die gleichen Commits sehen.Entweder 'git checkout -b MOODLE_23_STABLE upstream/MOODLE_23_STABLE' oder' git checkout MOODLE_23_STABLE' (Kurzschrift/DWIM-Syntax) – knittl

Antwort

16

Beim Klonen eines Repos werden nicht alle Remote-Zweige auf dem lokalen Repo dupliziert: Bei einem großen Remote-Repo mit vielen Zweigen würde dies Ihren lokalen Namespace mit Tonnen von Zweigen verschmutzen.

Ich habe eine one-liner command, um lokale Niederlassungen zu erstellen, die alle Remote-Zweige eines Remote-Repos verfolgen, aber das wird normalerweise nicht benötigt.
Sie erstellen nur einen lokalen Zweig, der bei Bedarf einen entfernten Zweig verfolgt.

git checkout -b aBranch --track origin/aBranch 

# or, shorter: 
$ git checkout --track origin/aBranch 
Branch aBranch set up to track remote branch refs/remotes/origin/aBranch. 
Switched to a new branch "aBranch" 

# even shorter at the end of this answer. 

ein --track Hinzufügen ermöglicht die Konfiguration der Einrichtung, um den Startpunkt Zweig als „upstream“ aus dem neuen Zweig zu markieren.
Diese Konfiguration weist git an, die Beziehung zwischen den beiden Zweigen in git status und git branch -v anzuzeigen.
Darüber hinaus lenkt es Git Pull ohne Argumente zu ziehen aus dem Upstream, wenn der neue Zweig ausgecheckt ist.


kostix erwähnt, dass --track impliziert wird, wenn eine abzweigen einem entfernten Zweig Forking (es sei denn branch.autosetupmerge auf false gesetzt) ​​

Dies könnte ausreichen,

git checkout aBranch 

Die genaue Erklärung von git checkout man page ist :

Wenn <branch> nicht gefunden wird, aber es tut in genau einem entfernten eine Tracking-Zweig existieren (nennen wir es <remote>) mit einem passenden Namen, so behandeln, als äquivalent zu:

$ git checkout -b <branch> --track <remote>/<branch 
+0

'--track' wird bei der Verzweigung einer Verzweigung von einer entfernten Verzweigung impliziert (es sei denn,' branch.autosetupmerge' ist nicht auf 'false' gesetzt). Ich würde auch @xan raten, sich Zeit zu nehmen und [Einführungsmaterial zu Remote-Niederlassungen] (http://git-scm.com/book/en/Git-Branching-Remote-Branches) zu lesen, um später nicht verloren zu gehen. – kostix

+0

@kostix guten Punkt. Ich habe diese Genauigkeit der Antwort für mehr Sichtbarkeit hinzugefügt. – VonC

+1

'git checkout --track Herkunft/aBranch' dies löste das Problem für mich, danke –

2

Einige Male, wenn Sie zog havn't der neueste Code, Sie dürfen nicht den neu erstellten Zweig auschecken. Weil Ihre Änderungen nicht synchron sind.

Also zuerst -Pull die neuesten -checkout von neu erstellten Zweig

Verwandte Themen