Wie kann ich mit msysgit unter Windows Verzeichnisse oder Ordner in Git ignorieren?
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 .
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"
Es scheint, dass es zwei Möglichkeiten gibt, Dateien und Verzeichnisse zu ignorieren:
. gitignore
.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))~/.gitignore_global
und git config --global core.excludesfile ~/.gitignore_global
ausführen, um dies zu Ihrer Git-Konfiguration hinzuzufügenhinweis: Dateien, die zuvor verfolgt wurden, können durch Ausführen von git rm --cached filename
gelöscht werden.
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 .
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.
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
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
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.
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.
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
Top Level .gitignore (/root/.gitignore)
Ignoriertes Verzeichnis .gitignore (/root/dirB.gitignore)
und so einfach ist das :)
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/
Sie können die ".gitignore" -Datei mit folgendem Inhalt erstellen:
*
!.gitignore
Es funktioniert bei mir und simples.
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.
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
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
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.)
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.
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