Gibt es einen Ignorierbefehl für git wie für svn?

125

Ich bin ein neuer Benutzer gitund starte ein neues Projekt. Ich habe eine Reihe von Punktedateien, die ich ignorieren möchte. Gibt es einen Ignorierbefehl für gitwie für svn?

Chris J.
quelle
1
Gute Alternative zu gitignore: git update-index --assume-unverändert <Datei> , dank stackoverflow.com/a/16442091/2162226
Gene Bo

Antworten:

136

Es gibt keinen speziellen git ignoreBefehl.

Bearbeiten Sie eine .gitignoreDatei an der entsprechenden Stelle in der Arbeitskopie. Sie sollten dies dann hinzufügen .gitignoreund festschreiben. Jeder, der dieses Repo klont, wird diese Dateien ignorieren.

Beachten Sie, dass nur Dateinamen, die mit beginnen /, relativ zum Verzeichnis sind, .gitignorein dem sie sich befinden. Alles andere stimmt mit Dateien in einem beliebigen Unterverzeichnis überein.

Sie können auch bearbeiten .git/info/exclude, um bestimmte Dateien nur in dieser einen Arbeitskopie zu ignorieren. Die .git/info/excludeDatei wird nicht festgeschrieben und gilt daher nur lokal in dieser einen Arbeitskopie.

Sie können auch eine globale Datei mit Mustern einrichten, mit denen Sie ignorieren können git config --global core.excludesfile . Dies gilt lokal für alle Git-Arbeitskopien auf demselben Benutzerkonto.

Führen git help gitignoreSie den Text aus und lesen Sie ihn, um Einzelheiten zu erfahren.

ndim
quelle
75
Das Fehlen eines einfachen Ignorierbefehls scheint für das Git-Team ein solches Versehen zu sein.
JCollum
4
@jcollum Auf den ersten Blick ist dies der Fall, aber die Einfachheit des Aliasing eines Befehls zum Hinzufügen neuer Befehle UND die Komplexität des Erstellens eines Befehls und des Durcharbeitens aller Randfälle / Fallstricke / potenziellen Probleme beim Bearbeiten einer Textdatei ist auch sinnvoll Benutzer. Ich fühle mich in Konflikt geraten, weil ich Ihnen sowohl zustimme als auch nicht zustimme.
Abelito
100

Ein sehr nützlicher Befehl zum Ignorieren von Git kommt mit den fantastischen tj / git-Extras .

Hier einige Anwendungsbeispiele:

Listen Sie alle derzeit ignorierten Muster auf

git ignore

Fügen Sie ein Muster hinzu

git ignore "*.log"

Fügen Sie eine der Vorlagen von gitignore.io hinzu

git ignore-io -a rails

git-extras bietet viele weitere nützliche Befehle. Auf jeden Fall einen Versuch wert.

Nicolai Fröhlich
quelle
1
Wenn ich also git ignore "index.html" verwende, wird diese Datei ignoriert?
John Andrews
Ist der Befehl -t noch anwendbar? Wenn ich es ausführe, fügt es nur das -t und die Vorlage hinzu, die ich versuche, in die git-Ignorierdatei
einzufügen
50

Unter Linux / Unix können Sie mit dem echoBefehl Dateien an die .gitignore-Datei anhängen . Wenn Sie beispielsweise alle .svnOrdner ignorieren möchten , führen Sie dies im Stammverzeichnis des Projekts aus:

echo .svn/ >> .gitignore
pfrenssen
quelle
1
Ich fand diesen Tweet mit dieser Syntax heraus twitter.com/noodl_io/status/669904872704253953
JohnAndrews
3
In Git Bash unter Windows musste ich ein vorangestelltes /und nachfolgendes '\' hinzufügen (um eine neue Zeile zu erstellen), wie z. B. echo /nbproject/project.properties\ >> .gitignoreund echo /nbproject/project.xml\ >> .gitignore.
Ryan
15

Sie haben zwei Möglichkeiten, Dateien zu ignorieren:

  • .gitignoreIn einem beliebigen Ordner werden die Dateien ignoriert, die in der Datei für diesen Ordner angegeben sind. Die Verwendung von Platzhaltern ist möglich.
  • .git/info/excludeEnthält das globale Ignoriermuster, ähnlich der global-ignoresKonfigurationsdatei für Subversionen.
Bluebrother
quelle
6
Beachten Sie, dass Muster in .gitignoreDateien, die kein '/' enthalten, rekursiv abgeglichen werden (dh auch in allen Unterverzeichnissen des Verzeichnisses, in dem sich die .gitignoreDatei befindet), im Gegensatz zu den svn:ignoreVerzeichniseigenschaften in Subversion.
Jakub Narębski
6

Ich hoffe es ist nicht zu spät.

Wenn Sie unter Windows arbeiten, können Sie einfach Folgendes tun, um eine Gitignore- Datei zu erstellen

echo name_of_the_file_you_want_to_ignore.extension > .gitignore

Um .gitignore zu bearbeiten, können Sie ausführen

notepad .gitignore
Nesar
quelle
2
Verwenden Sie das nicht, wenn Sie bereits eine .gitignore-Datei haben, diese wird überschrieben! Um anhängen , die Datei zu ignorieren, verwenden Sie diese: echo ignore.ext >> .gitignore
TomEberhard
Sie haben Recht, es ist ratsam, nur zu verwenden, wenn die .gitignore-Datei nicht vorhanden ist. Verwenden Sie besser "Notepad .gitignore". Wenn Sie eine .gitignore-Datei haben, wird diese geöffnet. Wenn Sie dies nicht tun, wird eine erstellt, und Sie können dann alle Dateien aus dem Editor hinzufügen. 1 Datei / Ordner pro Zeile
Nesar
3

Erstellen Sie eine Datei mit dem Namen .gitignore im Stammverzeichnis Ihres Repositorys. In dieser Datei geben Sie den relativen Pfad zu jeder Datei, die Sie ignorieren möchten, in eine einzelne Zeile ein. Sie können den *Platzhalter verwenden.

Bruno Reis
quelle
2

Mit den bereits bereitgestellten Antworten können Sie Ihren eigenen git ignoreBefehl mithilfe eines Alias ​​ausführen . Fügen Sie dies entweder zu Ihrer ~ / .gitconfig-Datei hinzu:

ignore = !sh -c 'echo $1 >> .gitignore' -

Oder führen Sie diesen Befehl über die (* nix) -Shell Ihrer Wahl aus:

git config --global alias.ignore '!sh -c "echo $1 >> .gitignore" -'

Sie können ebenfalls einen git excludeBefehl erstellen, indem Sie ihn oben ignoredurch excludeund .gitignoremit ersetzen .git/info/exclude.

(Wenn Sie den Unterschied zwischen diesen beiden Dateien noch nicht verstanden haben, nachdem Sie die Antworten hier gelesen haben, lesen Sie diese Frage .)

Daemonexmachina
quelle
1
Die Antwort hier erweitert $ 1 richtig: stackoverflow.com/a/21884533/1465227
Archangel33
2

für Namen, die nicht in der Arbeitskopie oder im Repo enthalten sind:

echo /globpattern >> .gitignore

oder für eine vorhandene Datei (Befehlszeile vom Typ sh):

echo /$(ls -1 file) >> .gitignore   # I use tab completion to select the file to be ignored  
git rm -r --cached file             # if already checked in, deletes it on next commit
nrbray
quelle
1

Es ist nützlich, eine vollständige Gitignore- Datei für Ihr Projekt zu definieren . Die Belohnung ist die sichere Verwendung der bequemen --alloder -aFlagge für Befehle wie addund commit.

Erwägen Sie außerdem, eine globale ~ / .gitignore- Datei für häufig ignorierte Muster zu definieren, z. B. *~ temporäre Dateien, die von Emacs erstellt wurden.

seh
quelle
1

Dazu müssen Sie Git-Extras installieren. Sie können es in Ubuntu mit apt-get installieren.

$ sudo apt-get install git-extras

Dann können Sie den Befehl git ignore verwenden.

$ git ignore file_name
Vidura Mudalige
quelle
3
Wenn Sie Homebrew auf einem Mac installiert haben, können Sie es ausführen brew install git-extras.
Alex Glover
0

Sie können auch Joe Blaus gitignore.io verwenden

Entweder über die Webschnittstelle https://www.gitignore.io/

Wenn Sie das CLI-Tool installieren, ist dies sehr einfach und schnell. Geben Sie einfach Folgendes in Ihr Terminal ein:

Linux:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bashrc && source ~/.bashrc

OSX:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bash_profile && source ~/.bash_profile

Und dann können Sie einfach gigefolgt von allen Plattform- / Umgebungselementen eingeben, für die Sie Gitignore-Kriterien benötigen.

Beispiel!
Nehmen wir an, Sie arbeiten an einem Knotenprojekt, das Grunzen enthält, und Sie verwenden Webstorm unter Linux. Dann möchten Sie möglicherweise Folgendes eingeben:
gi linux,webstorm,node,grunt > .gitignore(um eine brandneue Datei zu erstellen)
oder
gi linux,webstorm,node,grunt >> .gitignore(um die neuen Regeln an eine vorhandene Datei anzuhängen / hinzuzufügen )

bam, du bist gut zu gehen

JorgeArtware
quelle