2012-04-12 13 views
7

Ich habe ein Git Repo, dass ich einen Pull aus machen möchte. Ich mache eine normale git pull ohne Probleme. Das Problem ist, dass ich nur ein bestimmtes Verzeichnis aus dem Repo möchte. Mein Denken war, dass ich eine .gitignore-Datei mit einer Regel wie diese verwenden:Ziehen nur ein Verzeichnis aus einem Git Repo

#Ignore all files 
/
#Except the one I want 
!/temp 

Das Problem dieses nicht funktioniert ist. Ist das der richtige Weg oder gibt es einen besseren Weg?

+0

BTW, um alle Dateien zu ignorieren, würde ich gehen mit '/ *' – c00kiemon5ter

+1

Nur für den Rekord: Sie können nicht nur ein Verzeichnis ziehen. Du ziehst immer die ** Geschichte **, nicht Dateien oder Verzeichnisse. Natürlich gibt es nur ein kostenloses _work_ auf einigen Dateien. – fork0

Antwort

25

git pull ruft die entfernte Verzweigung ab und führt sie zusammen.

.gitignore funktioniert nur lokal und wird ausblenden übereinstimmende Einträge von git status angezeigt und mit git add zum Index hinzugefügt werden. Es ist nicht das, was du willst.

Was Sie tun möchten, ist fetch der Remote-Zweig, und daraus extrahieren Sie die Datei/Verzeichnis, die Sie benötigen.

$ git fetch <remote> <branch> 
$ git checkout <remote>/<branch> -- relative/path/to/file/or/dir 

Die Datei/Verzeichnis sollte jetzt in Ihrem Zweig sein und zum Index hinzugefügt werden.

+0

Das war genau das, was ich brauchte. Ich danke dir sehr! – Dan

+0

Sollte das in der 2. Zeile "remove" oder "remote" heißen? –

+0

@ ing0 danke, es war ein Tippfehler natürlich;) – c00kiemon5ter