Verzeichnisse in Git-Repositorys unter Windows ignorieren

1106

Wie kann ich Verzeichnisse oder Ordner in Git mit msysgit unter Windows ignorieren?

sf.
quelle
Möchten Sie, dass der Cache-Ordner vollständig aus dem Repository ausgeschlossen wird oder nur dessen Inhalt?
Gareth
1
Ich vermute, dass das OP mehrere Cache-Verzeichnisse hat, deren Inhalt ignoriert werden sollte, aber sicherstellen möchte, dass diese Verzeichnisse für jeden erstellt werden, der das Repository klont.
Mark Longair
@Gareth: Da leere Ordner nicht mit git verfolgt werden, wird der Ordner auch ignoriert, wenn der Inhalt ignoriert wird, nicht wahr?
eckes
3
Ich erwähnte das nur, weil einige Leute (gewöhnlich .gitkeep) versteckte Dateien verwenden , um ein Verzeichnis anzugeben, das aufbewahrt werden soll
Gareth
2
Ist das /am Ende, was es wissen lässt, dass es ein Verzeichnis ist, das es ignorieren sollte?
Charlie Parker

Antworten:

1595

Erstellen Sie eine Datei mit dem Namen .gitignoreim Verzeichnis Ihres Projekts. Ignorieren Sie Verzeichnisse, indem Sie den Verzeichnisnamen in die Datei eingeben (mit einem angehängten Schrägstrich):

dir_to_ignore/

Weitere Informationen finden Sie hier .

Eintopf
quelle
130
In einer Windows-Cmd-Eingabeaufforderung können Sie entweder ".gitignore bearbeiten" oder "Editor .gitignore" verwenden, um die richtige Datei zu erstellen.
Joey Green
44
Sie können auch 'touch .gitignore' in der Windows-Eingabeaufforderung git bash verwenden, um die korrekt benannte Datei zu erstellen, die dann wiederum per Editor oder dergleichen bearbeitet werden kann ...
SGB
39
Oder erstellen Sie einfach eine Datei mit dem Namen .gitignore. mit dem Explorer und bearbeiten Sie es mit dem Editor (der nachfolgende Punkt wird entfernt). Auf diese Weise müssen Sie keine Eingabeaufforderung verwenden.
P. Galbraith
6
Oder Sie können .gitignore vom Terminal aus vim. :)
MollyCat
34
Oder, was überraschenderweise nicht erwähnt wurde, obwohl es der schnellste Weg ist, geben Sie einfach "echo folder_to_ignore >> .gitignore" in die Konsole ein.
Godsmith
205

Standardmäßig wird der Windows Explorer angezeigt, .gitignorewenn der Dateiname tatsächlich lautet .gitignore.txt.

Git wird nicht verwendet .gitignore.txt

Und Sie können die Datei nicht umbenennen .gitignore, da Windows Explorer der Meinung ist, dass es sich um eine Datei vom Typ gitignore ohne Namen handelt.

Nicht-Befehlszeilenlösung:

Sie können eine Datei in ".gitignore" umbenennen. und es wird ".gitignore" erstellt
Gehirnwelle
quelle
46
Das funktioniert? Ich habe den Leuten immer nur gesagt, sie sollen den Editor öffnen und im Dialogfeld Speichern unter den Dateinamen eingeben, der von doppelten Anführungszeichen umgeben ist. So wird er beispielsweise gespeichert, ".gitignore"ohne automatisch eine Erweiterung hinzuzufügen.
Arrowmaster
9
Ordentlich. Das Einschließen einer Nachlaufzeit funktioniert. Der Explorer entfernt den letzten Zeitraum und führt zu einer Datei mit dem Namen ".gitignore". Ich denke, die Anführungszeichenmethode ist sauberer und sorgt weniger für Überraschungen.
Triynko
4
Oder ändern Sie im Dialogfeld Speichern unter den Dateityp in "Alle Dateien ( . )". Windows fügt dann keine Erweiterung hinzu.
OsakaWebbie
5
oder in git bash tippe einfach "touch .gitignore" in deinen Ordner
Rayjax
3
".gitignore."- Das ist ein toller Trick! Ich hatte auch immer Probleme mit .htaccess...
Obmerk Kronen
105

Es scheint, dass es zwei Möglichkeiten gibt, Dateien und Verzeichnisse zu ignorieren:

  1. .gitignore

    • Platzieren Sie die .gitignoreDatei im Stammverzeichnis Ihres Repositorys neben dem .gitOrdner (stellen Sie unter Windows sicher, dass Sie die wahre Dateierweiterung sehen, und erstellen Sie dann .gitignore.(mit dem Punkt am Ende, um eine leere Dateierweiterung zu erstellen)).
    • Nehmen Sie die globale Konfiguration vor ~/.gitignore_globalund führen Sie sie aus git config --global core.excludesfile ~/.gitignore_global, um sie Ihrer Git-Konfiguration hinzuzufügen

    Hinweis: Zuvor verfolgte Dateien können durch Ausführen nicht mehr verfolgt werden git rm --cached filename

  2. Repository ausschließen - Für lokale Dateien, die nicht freigegeben werden müssen, fügen Sie der Datei einfach das Dateimuster oder -verzeichnis hinzu .git/info/exclude. Diese Regeln sind nicht festgeschrieben, sodass sie von anderen Benutzern nicht gesehen werden . Weitere Informationen finden Sie hier .

Informationen zu Ausnahmen in der Liste der ignorierten Dateien finden Sie in dieser Frage .

Vairis
quelle
36
gute Arbeit, die darauf hinweist git rm --cached <filename>. Absolut kritisch für Repos, die existierten, BEVOR Sie die.gitignore
MaurerPower
2
git rm --cached <Dateiname> hat das Problem behoben, das ich mit .gitignore hatte :)
JeremyFelix
1
Ja, git rm - zwischengespeicherter Dateiname ist absolut entscheidend. Es machte mich verrückt, da Git immer noch Dateien bereitstellte, von denen ich eindeutig angab, dass sie ignoriert wurden (Gitignore wurde nach dem ersten Festschreiben erstellt). Vielen Dank!
Potaito
1
Mein Problem gelöst. Git verfolgte den Lieferantenordner in meinem Laravel-Repo, obwohl ich den Lieferantenordner in Gitignore hinzugefügt hatte. Vielen Dank.
Jayant
44

Ich hatte einige Probleme beim Erstellen einer Datei im Windows Explorer mit einem .am Anfang.

Eine Problemumgehung bestand darin, in die Befehlsschale zu wechseln und mit "Bearbeiten" eine neue Datei zu erstellen.

sf.
quelle
2
oder fügen Sie .am Ende einfach ein Extra hinzu, damit der Explorer nicht mehr denkt, dass .gitignorees sich um die Erweiterung handelt. Dann wird bei der Eingabe dieser nachfolgende Punkt ohne Erweiterung nur gegessen und Sie haben .gitignore TL; DR: Versuchen Sie, ihn zu benennen .gitignore.=> Sie erhalten.gitignore
leerssej
43

Um Git anzuweisen, bestimmte Dateien oder Ordner zu ignorieren, müssen Sie eine .gitignoreDatei erstellen .

Im Windows Explorer müssen Sie jedoch einen Namen für die Datei angeben. Sie können einfach keine Datei mit nur einer Erweiterung erstellen. Der Trick besteht darin, eine leere Textdatei zu erstellen, zur Eingabeaufforderung zu wechseln und den Namen der Datei in zu ändern .gitignore:

ren "New Text Document.txt" .gitignore

Öffnen Sie nun die Datei mit Ihrem bevorzugten Texteditor und fügen Sie die Datei- / Ordnernamen hinzu, die Sie ignorieren möchten. Sie können auch Platzhalter wie diesen verwenden : *.txt.

Mahes
quelle
15
Oder einfach: echo dir_to_ignore /> .gitignore
Oliver
2
Oder type nul > .gitignoreum eine leere Datei zu erstellen
Castro Roy
Oder rufen Sie einfach die Datei auf, .gitignore.wenn die Dateierweiterungen nicht in Ihrem Windows Explorer versteckt sind
Vairis
22

Wenn Sie einen Ordner und nicht die darin enthaltenen Dateien verwalten möchten, legen Sie einfach eine ".gitignore" -Datei in den Ordner mit "*" als Inhalt ab. Diese Datei lässt Git alle Inhalte aus dem Repository ignorieren. Aber .gitignorein Ihrem Repository aufgenommen werden.

$ git add path/to/folder/.gitignore

Wenn Sie einen leeren Ordner hinzufügen, erhalten Sie diese Nachricht (.gitignore ist eine versteckte Datei).

The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added

Verwenden Sie also "-f", um das Hinzufügen zu erzwingen:

$ git add path/to/folder/.gitignore -f
Sensorario
quelle
19

In Windows gibt es einen zusätzlichen Haken mit Schrägstrichen. Ausschließen eines einzelnen Verzeichnisses in .gitignore mit

dir_to_exclude /

wird möglicherweise funktionieren, aber alle Verzeichnisse mit ausschließen

/.

verursacht Probleme, wenn Sie Dateinamen mit Leerzeichen (wie my file.txt) in Ihrem Verzeichnis haben: Git Bash maskiert diese Leerzeichen mit einem Backslash (wie my\ file.txt) und Git für Windows unterscheidet nicht zwischen /und \.

Um alle Verzeichnisse auszuschließen, verwenden Sie besser:

** /

Zwei aufeinanderfolgende Sternchen kennzeichnen den Verzeichnisinhalt.

wertlos
quelle
15

Auch in Ihrem \.git\infoProjektverzeichnis gibt es eine Ausschlussdatei, die praktisch mit .gitignore(glaube ich) identisch ist . Sie können Dateien und Verzeichnisse hinzufügen, die Sie ignorieren möchten.

Si3
quelle
Ich mag diesen Ansatz, ich komme einfach nicht mit dem Pfad darin klar, ich möchte einen Ordner im Haupt-Repo ignorieren, wie geht das?
Shimmy Weitzhandler
Aber sollten Sie nicht Dateien in .git alleine lassen (den Inhalt mit offiziellen Mitteln manipulieren)?
Peter Mortensen
13

Nur für den Fall, dass Sie Unterordner ausschließen müssen, können Sie den **Platzhalter verwenden, um eine beliebige Ebene des Unterverzeichnisses auszuschließen.

**/build/output/Debug/
Iss bei Joes
quelle
12

Um ein gesamtes Verzeichnis in Git zu ignorieren, ist es am einfachsten, eine Gitignore-Datei in das Zielverzeichnis aufzunehmen, die einfach "*" enthält.

Ein anschauliches Beispiel,

Beispielsystem

/root/
    .gitignore
    /dirA/
        someFile1.txt
        someFile2.txt
    /dirB/
        .gitignore
        someFile3.txt
        someFile4.txt

Tor

  • ignoriere den Inhalt von / dirB /

Top Level .gitignore (/root/.gitignore)

  • Hier finden Sie Ihre Standard-Gitignore-Informationen

Ignoriertes Verzeichnis .gitignore (/root/dirB.gitignore)

  • Diese Datei liest sich nur als '*' und das Verzeichnis wird vollständig ignoriert, sich selbst und alle Dateien!

Und so einfach ist das :)

J-Dizzle
quelle
10

Wenn alles andere fehlschlägt, versuchen Sie, die Datei zu bearbeiten

/.git/info/exclude

und fügen Sie die gewünschten Verzeichnisse wie folgt an das Ende der Datei hinzu:

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
assets/
compiled/

Ich habe die Ordner "Assets" und "Compiled" zur Liste der zu ignorierenden Dateien und Verzeichnisse hinzugefügt.

Xedret
quelle
1
Ich verwende Atom unter Windows 10. Es funktioniert! Danke Alter!
Putu De
Ich habe alle anderen mit meiner aktuellen Konfiguration ausprobiert und dies war meine endgültige Antwort.
Xedret
9

Unter Unix:

touch .gitignore

Unter Windows:

echo > .gitignore

Diese in einem Terminal ausgeführten Befehle erstellen eine .gitignoreDatei am aktuellen Speicherort.

Fügen Sie dieser .gitignoreDatei dann einfach Informationen hinzu (z. B. mit Notepad ++), welche Dateien oder Ordner ignoriert werden sollen. Speichern Sie Ihre Änderungen. Das ist es :)

Weitere Informationen: .gitignore

fvolodimir
quelle
9

Sie können die Datei ".gitignore" mit folgenden Inhalten erstellen:

*
!.gitignore

Für mich geht das.

Claudionor Oliveira
quelle
2
Dies ist die beste Antwort und bietet zusätzliche Vorteile bei der Projektbereitstellung und -wartung.
Nitin ...
Wer ist "simples" ?
Peter Mortensen
8

Ich hatte einige Probleme, Git dazu zu bringen, die .gitignoreDatei unter Windows aufzunehmen. Die $GIT_DIR/info/excludeDatei scheint jedoch immer zu funktionieren.

Der Nachteil dieses Ansatzes ist jedoch, dass die Dateien im $GIT_DIRVerzeichnis nicht beim Einchecken enthalten sind und daher nicht freigegeben werden.

ps $GIT_DIRist normalerweise der versteckte Ordner mit dem Namen.git

Jason
quelle
Ja, Git unter Windows ist sehr pingelig in Bezug auf .gitignore - die lokale Ausschlussdatei macht jedoch das, was ich brauche. Vielen Dank!
andersop
6

Ich gehe davon aus, dass das Problem darin besteht, dass Ihr Arbeitsbaum wie folgt aussieht:

a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore

... mit dem .gitignoredu beschreibst. Dies gibt Ihnen folgende git statusAusgabe:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
#    a-cache/
#    b-cache/

... wenn die index.htmlDateien noch nicht zum Repository hinzugefügt wurden. (Git sieht, dass sich nicht signierte Dateien in den Cache-Verzeichnissen befinden, meldet jedoch nur die Verzeichnisse.) Um dies zu beheben, stellen Sie sicher, dass Sie die index.htmlDateien hinzugefügt und festgeschrieben haben :

git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"

... und dein git statusWille sieht dann so aus:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
nothing added to commit but untracked files present (use "git add" to track)

(Natürlich möchten Sie sich auch festlegen .gitignore. Ich war nur faul mit diesem Testfall.)

Mark Longair
quelle
1
Sie wahrscheinlich tun wollen .gitignore besonders begehen , wie Sie wahrscheinlich zu wollen , sind Änderungen daran zu verfolgen, und so ist Ihr Team (wenn Sie mit einem arbeiten). Siehe stackoverflow.com/a/767213/123033
Dave Everitt
2
@ Dave Everitt: Genau deshalb habe ich gesagt "Natürlich möchten Sie auch .gitignore festlegen".
Mark Longair
6

Wenn Sie unter Windows und Mac einen Ordner mit dem Namen Flower_Data_Folder im aktuellen Verzeichnis ignorieren möchten, haben Sie folgende Möglichkeiten:

echo Flower_Data_Folder >> .gitignore

Wenn es sich um eine Datei mit dem Namen handelt data.txt:

echo data.txt >> .gitignore

Wenn es sich um einen Pfad wie "Data / passwords.txt" handelt

echo "Data/passwords.txt" >> .gitignore. 
Olusola Omosola
quelle
2

Ich hatte ähnliche Probleme. Ich arbeite an einer Windows-Toolkette mit einem gemeinsam genutzten Repository für Linux-Leute, und sie erstellen gerne Dateien mit denselben (außer Fall-) Namen in einem bestimmten Ordner.

Der Effekt ist, dass ich das Repository klonen kann und sofort Dutzende von 'geänderten' Dateien habe, die beim Einchecken Chaos verursachen würden.

Ich habe Windows auf Groß- und Kleinschreibung eingestellt und Git, um Groß- und Kleinschreibung nicht zu ignorieren, aber es schlägt immer noch fehl (in den Win32-API-Aufrufen anscheinend).

Wenn ich die Dateien gitignore, muss ich daran denken, die .gitignore-Datei nicht zu verfolgen.

Aber ich habe hier eine gute Antwort gefunden:

http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html

Chris Aaaaa
quelle
Der Link scheint unterbrochen zu sein (er leitet zuerst zur 'https'-Version weiter): "Sichere Verbindung fehlgeschlagen. Während einer Verbindung zu archive.robwilkerson.org ist ein Fehler aufgetreten. PR_END_OF_FILE_ERROR"
Peter Mortensen
0

Erstellen .gitignoreSie einfach eine Datei in Ihrem Projektordner und fügen Sie dann den Namen des Ordners hinzu, zum Beispiel:

frontend/node_modules
DINA TAKLIT
quelle