2016-04-18 11 views
2

Ich habe 4 Remote-Niederlassungen: A, B, C, D. A und B sind nicht mehr relevant für mich, aber ich möchte sie fernhalten. Wenn ich also git fetch ausführe, möchte ich nur C und D holen.Make Git nicht alle Zweige verfolgen

Antwort

3

Wie spezifischen Zweig

# fetch a remote branch from remote but the catch here is that the branch 
# will not have a tracking branch. It will be checked out locally. 
git fetch <remote> <remote branch>:refs/remotes/<remotename>/<local branch> 

Ein paar mehr Hinweise zur Kasse: Git kümmert sich nicht darum, wo Ihre Commits sind.

Git hat eine große Inhaltsdatei (.pack), die den gesamten Inhalt des Repositorys speichert. Wenn Sie fetch ausführen, wird einfach der gesamte Inhalt von der Fernbedienung ausgeführt. Git "sieht" keine Zweige in dieser Datei.

Wenn Sie Filiale git checkout das neueste Commit dieser Branche. Sie können natürlich die HEAD verschieben und ändern und sie auf ein anderes Commit setzen.

Der Punkt ist, dass git kümmert sich nicht um Tags, Zweige usw. Es einfach verfolgen den Inhalt und seit sommit speichern seine Eltern git wissen, wie die "vorherigen" Commit aus dieser Datei zu extrahieren.


Summary

Git keine Zweige oder Tags verfolgen. Es speichert einfach ihre SHA-1 intern und weiß, wie man sie bei Bedarf extrahiert.


+0

Thx für die Erklärung. Wir erstellen für jede Aufgabe einen Feature-Zweig. Ich würde gerne alle Zweige behalten, aber wenn ich "hole", erhalte ich eine Menge von ihnen, sogar die, die super alt sind. Mit 'git fetch --depth = ' könnte ich die Zweige beschränken, aber gibt es da noch einen anderen Weg? – zatziky

+0

Warum interessiert es dich, wenn die Zweige lokal abgerufen werden? Sie können dies auch tun, um alte gelöschte Daten vom Server zu entfernen: 'git fetch --all --prune' – CodeWizard

+1

Die Tiefe begrenzt nur die Anzahl der abzurufenden Commits. Wie in 'git clone --depth', aber es hat nichts damit zu tun, dass die anderen Zweige nicht abgerufen werden. – CodeWizard