wake-up-neo.com

Ignorieren von Verzeichnissen in Git Repos unter Windows

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

952
sf.

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

dir_to_ignore/

Weitere Infos hier .

1408
stew

Standardmäßig zeigt Windows Explorer .gitignore an, wenn der Dateiname tatsächlich .gitignore.txt lautet.

Git wird .gitignore.txt nicht verwenden

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

Nicht Befehlszeilenlösung:

Sie können eine Datei in umbenennen ".gitignore." und es wird schaffen ".gitignore"
191
brainwavedave

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

  1. . gitignore

    • Platzieren Sie die Datei .gitignore im Stammverzeichnis Ihres Repos neben dem Ordner .git (in Windows stellen Sie sicher, dass Sie siehe die wahre Dateierweiterung und machen Sie dann .gitignore. (mit dem Punkt) am Ende leere Dateierweiterung machen))
    • Globale Konfiguration vornehmen ~/.gitignore_global und git config --global core.excludesfile ~/.gitignore_global ausführen, um dies zu Ihrer Git-Konfiguration hinzuzufügen

    hinweis: Dateien, die zuvor verfolgt wurden, können durch Ausführen von git rm --cached filename gelöscht werden.

  2. Repo exclude - Für lokale Dateien, die nicht freigegeben werden müssen, fügen Sie einfach das Dateimuster oder -verzeichnis zur Datei .git/info/exclude hinzu. Diese Regeln sind nicht verbindlich, so dass nicht von anderen Benutzern gesehen werden Weitere Informationen hier

[aktualisiert] Um Ausnahmen in der Liste der ignorierten Dateien zu machen, siehe diese Frage .

95
Vairis

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

eine Problemumgehung bestand darin, die Befehlszeile aufzurufen und mit "Bearbeiten" eine neue Datei zu erstellen.

43
sf.

um GIT anzuweisen, bestimmte Dateien oder Ordner zu ignorieren, müssen Sie eine .gitignore -Datei erstellen.

im Windows Explorer müssen Sie jedoch einen Namen für die Datei angeben. Sie können nur eine Datei mit der Erweiterung "Nur" erstellen. Der Trick besteht darin, eine leere Textdatei zu erstellen und zum Befehl "Eingabeaufforderung" zu wechseln und den Namen der Datei in ".gitignore" zu ändern.

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 solche Platzhalter verwenden *.txt

hoffe es beantwortet deine frage

41
Mahes

Wenn Sie einen Ordner und nicht die darin enthaltenen Dateien verwalten möchten, legen Sie einfach eine ".gitignore" -Datei mit "*" als Inhalt in den Ordner. Diese Datei ignoriert den gesamten Inhalt aus dem Repository. Aber .gitignore wird in Ihr Repo aufgenommen.

$ 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
19
sensorario

In Windows gibt es einen zusätzlichen Haken mit Schrägstrichen. Ein einzelnes Verzeichnis in .gitignore mit ausschließen

dir_to_exclude /

wird evtl. funktionieren, aber ohne alle verzeichnisse mit

/

verursacht Probleme, wenn Sie Dateinamen mit Leerzeichen (wie my file.txt) in Ihrem Verzeichnis haben: Git bash entzieht diese Leerzeichen mit einem Backslash (wie my\ file.txt) und Git for Windows unterscheidet nicht zwischen / und \.

Um alle Verzeichnisse auszuschließen, verwenden Sie besser:

** /

Zwei aufeinanderfolgende Sternchen kennzeichnen den Verzeichnisinhalt.

15
wortwart

Auch in Ihrem \.git\info -Projektverzeichnis gibt es eine Ausschlussdatei, die praktisch mit .gitignore identisch ist (glaube ich). Sie können Dateien und Verzeichnisse hinzufügen, die ignoriert werden sollen.

14
Si3

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

Ziel

  • 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, selbst und alle Dateien!

und so einfach ist das :)

11
J-Dizzle

Nur für den Fall, dass Sie Unterordner ausschließen müssen, können Sie mit dem Platzhalter ** jede Ebene des Unterverzeichnisses ausschließen.

**/build/output/Debug/
8
Eat at Joes

Sie können die ".gitignore" -Datei mit folgendem Inhalt erstellen:

*
!.gitignore

Es funktioniert bei mir und simples.

7

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

/.git/info/exclude

und fügen Sie die gewünschten Verzeichnisse wie folgt zum 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.

7
Xedret

Ich hatte einige Probleme damit, dass GIT die Datei .gitignore unter Windows abholt. Die $GIT_DIR/info/exclude -Datei scheint jedoch immer zu funktionieren. Der Nachteil dieses Ansatzes ist jedoch, dass die Dateien im Verzeichnis $GIT_DIR beim Einchecken nicht berücksichtigt und daher nicht freigegeben werden.

p.s. $GIT_DIR ist normalerweise der versteckte Ordner mit dem Namen .git

7
Jason

Unter Unix:

touch .gitignore

Unter Windows:

echo > .gitignore

Diese Befehle, die in einem Terminal ausgeführt werden, erstellen eine .gitignore -Datei am aktuellen Speicherort.

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

Weitere Informationen: https://www.atlassian.com/git/tutorials/saving-changes/gitignore

5
fvolodimir

Ich nehme an, das Problem ist, 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 .gitignore den du beschreibst. Dies gibt git status wie folgt aus:

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

... if Die index.html -Dateien wurden dem Repository noch nicht hinzugefügt. (git sieht, dass die Cache-Verzeichnisse nicht signierte Dateien enthalten, meldet jedoch nur die Verzeichnisse.) Um dies zu beheben, stellen Sie sicher, dass Sie die index.html -Dateien hinzugefügt und festgeschrieben haben:

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

... und dein git status wird dann so aussehen:

$ 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 auch .gitignore festschreiben, ich war nur faul mit diesem Testfall.)

5
Mark Longair

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 eine Datei mit dem Namen data.txt ist

echo data.txt >> .gitignore

wenn es ein Pfad wie "Data/passwords.txt" ist

echo "Data/passwords.txt" >> .gitignore.

4
Olusola Omosola

Ich hatte ähnliche Probleme. Ich arbeite an einer Windows-Toolkette mit einem gemeinsam genutzten Repository mit Linux-Leuten. Sie erstellen problemlos Dateien mit den gleichen Namen (außer in Groß- und Kleinschreibung) in einem bestimmten Ordner.

Der Effekt ist, dass ich das Repo klonen und sofort Dutzende von 'modifizierten' Dateien haben kann, die, wenn ich eingecheckt habe, 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

1
Chris Aaaaa