2012-10-09 7 views
20

Ich habe einen Verzeichnisbaum mit vielen verschiedenen Dateien. Im übergeordneten Verzeichnis befinden sich 300 Verzeichnisse. Jedes Verzeichnis könnte andere Unterverzeichnisse haben.Konfigurieren Sie Git, um nur eine Dateierweiterung zu verfolgen

Ich möchte nur * .cocci auf allen Unterverzeichnissen verfolgen. Hier ist mein .gitignore:

* 
!*.cocci 

Aber es funktioniert nicht, da die Dateien auf Unterverzeichnisse nicht verfolgt werden. Wie kann ich Git sagen, dass ich nur * .cocci in allen Unterverzeichnissen verfolgen möchte?

+0

Haben Sie eigentlich 'git add'ed die Dateien? Das Einrichten von '.gitignore' führt nicht automatisch dazu, dass Dateien nachverfolgt werden ... – twalberg

+0

Ich kann nur eine Datei hinzufügen, wenn ich git add -f verwende. Das scheint nicht korrekt zu sein ... –

+0

mögliches Duplikat von [Whitelisting und Unterverzeichnisse in Git] (http://stackoverflow.com/questions/9162919/whitelisting-and-subdirectories-in-git) – daviesgeek

Antwort

33

Gelesen this question.

Sie wollen:

# Blacklist everything 
* 
# Whitelist all directories 
!*/ 
# Whitelist the file you're interested in. 
!*.cocci 

Hinweis, diese nur*.cocci Dateien verfolgen werden. Ihr funktioniert nicht, weil Sie alles ignorieren (das ist die erste Zeile), die alle Unterverzeichnisse ignoriert.

+0

Ich bin immer noch nicht zufrieden mit Git-Status-Ausgabe, da es nicht nicht verzeichneten Ordner Inhalte anzeigen, aber der Filter funktioniert jetzt. Danke –

+0

Könnten Sie bitte die Kommentare in Ihrer Antwort ändern? Sie müssen ihre eigenen Linien beginnen. Wenn Sie das in ein .gitignore einfügen, wird es nicht funktionieren (getestet auf v.1.9.1). Check out http://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository#Ignoring-Files – panepeter

+1

Sie können auch möchten .gitignore –

-1

Haben Sie versucht !*/*.cocci anstelle Ihrer !*.cocci?

+0

Danke für den Tipp, aber gleich Ergebnisse ... –

1

Es ist unmöglich Verzeichnis von !dir in .gitignore auf der Ignorierung, aber dann ist es immer noch möglich, Verzeichnis, das von Hand zu haben:

git add dir -f 

Wenn also die .gitignore Datei wie folgt aussieht:

* 
!*.txt 

Dann, wenn Sie tun git add . neue *.txt Dateien sind dann hinzugefügt. Neues Verzeichnis wird nicht automatisch hinzugefügt werden, lassen Sie es von git add dir -f

1

verlängern @simont Antwort von Hand hinzugefügt werden, wenn wir *.cocci Dateien aus einem bestimmten Verzeichnis und dessen Unterverzeichnissen auf die weiße Liste setzen wollte, hätte ich falsch gemacht haben:

directory/* 
!directory/*/ 
!directory/*.cocci 

Das scheint nicht einschließlich *.cocci Dateien unter directory/subtree.

Um alle *.cocci Dateien in allen Unterverzeichnissen von directory eingetragen die folgenden zu finden:

directory/** 
!directory/*/ 
!directory/**/*.cocci 
Verwandte Themen