Aus der entsprechenden Git-Dokumentation :
Muster, die für ein bestimmtes Repository spezifisch sind, aber nicht für andere verwandte Repositorys freigegeben werden müssen (z. B. Hilfsdateien, die sich im Repository befinden, aber für den Workflow eines Benutzers spezifisch sind), sollten in die $GIT_DIR/info/exclude
Datei aufgenommen werden.
Die .git/info/exclude
Datei hat das gleiche Format wie jede .gitignore
andere Datei. Eine andere Möglichkeit besteht darin core.excludesFile
, den Namen einer Datei festzulegen, die globale Muster enthält.
Hinweis: Wenn Sie bereits nicht bereitgestellte Änderungen vorgenommen haben, müssen Sie nach dem Bearbeiten Ihrer Ignoriermuster Folgendes ausführen:
git update-index --assume-unchanged <file-list>
Hinweis zu$GIT_DIR
: Dies ist eine Notation, die im gesamten Git-Handbuch verwendet wird, um lediglich den Pfad zum Git-Repository anzugeben. Wenn die Umgebungsvariable festgelegt ist, überschreibt sie den Speicherort des Repos, in dem Sie sich befinden. Dies ist wahrscheinlich nicht das, was Sie möchten.
Bearbeiten : Eine andere Möglichkeit ist zu verwenden:
git update-index --skip-worktree <file-list>
Umkehren durch:
git update-index --no-skip-worktree <file-list>
git update-index --assume-unchanged [<file>...]
nachdem Sie die Ausschlussdatei hinzugefügt haben. Die Änderungen werden bis dahin nicht übernommen.skip-worktree
würden bevorzugt wahrscheinlichassume-unchanged
.Update : Verwenden Sie
git update-index --skip-worktree [<file>...]
stattdessen @danShumway! Siehe Borealids Erklärung zum Unterschied der beiden Optionen .Alte Antwort:
Wenn Sie lokale Änderungen an nachverfolgten Dateien ignorieren müssen (wir haben diese mit lokalen Änderungen an Konfigurationsdateien), verwenden Sie
git update-index --assume-unchanged [<file>...]
.quelle
git update-index --assume-unchanged my-file.php
damit sie ignoriert wird. Danke für den Tipp!git update-index --no-assume-unchanged my-file.php
.git/info/exclude
möchten Sie (um zu vermeiden, dass der häufig freigegebene und nachverfolgte .gitignore verschmutzt wird)--assume-unchanged
bevor ich Ihr Update las . Ich löste mich mit--no-assume-unchanged
und tat dann das--skip-worktree
... Bin ich im klaren?Fügen Sie die folgenden Zeilen zum Abschnitt [Alias] Ihrer .gitconfig-Datei hinzu
Jetzt können Sie
git ignore my_file
Änderungen an der lokalen Dateigit unignore my_file
ignorieren und das Ignorieren der Änderungen beenden.git ignored
listet die ignorierten Dateien auf.Diese Antwort wurde von http://gitready.com/intermediate/2009/02/18/temporARY-ignoring-files.html abgerufen .
quelle
Sie haben mehrere Möglichkeiten:
.gitignore
Datei in Ihrem Arbeitsverzeichnis (oder wenden Sie sie automatisch mit topgit oder einem anderen solchen Patch-Tool an).$GIT_DIR/info/exclude
Datei ein, wenn dies für einen Baum spezifisch ist.git config --global core.excludesfile ~/.gitignore
und fügen Sie Ihrem Muster Muster hinzu~/.gitignore
. Diese Option gilt, wenn Sie bestimmte Muster in allen Bäumen ignorieren möchten . Ich benutze dies zum Beispiel für.pyc
und.pyo
Dateien.Stellen Sie außerdem sicher, dass Sie Muster verwenden und Dateien gegebenenfalls nicht explizit auflisten.
quelle
git config --global
die Option global festlegen.Ich denke, Sie suchen:
die lokale Änderungen ignorieren
Hier finden Sie http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ Weitere Erklärungen zu dieser Lösung!
Verwendung rückgängig machen:
quelle
--skip-worktree
und--assume-unchanged
bei dieser SO-Frage--skipworktree
, sollte ich später meine Meinung ändern und die Datei erneut verfolgen wollen?git update-index --no-skip-worktree <file>
Sie können einige Git-Aliase installieren , um diesen Vorgang zu vereinfachen. Dadurch wird der
[alias]
Knoten Ihrer.gitconfig
Datei bearbeitet .Die Verknüpfungen, die hiermit für Sie installiert werden, lauten wie folgt:
git ignore config.xml
config.xml
- und Sie daran hindern, diese Änderungen versehentlich zu übernehmen.git unignore config.xml
config.xml
- damit Sie diese Änderungen erneut festschreiben können.git ignored
Ich habe diese unter Bezugnahme auf Phatmanns Antwort erstellt, die eine
--assume-unchanged
Version derselben darstellt.In der von mir vorgestellten Version werden
--skip-worktree
lokale Änderungen ignoriert. Siehe Borealid Antwort für eine vollständige Erklärung des Unterschieds, aber im Wesentlichen--skip-worktree
ist Zweck ist für Entwickler zu ändern Dateien , ohne das Risiko ihre Änderungen kommen .Der
git ignored
hier vorgestellte Befehl verwendetgit ls-files -v
und filtert die Liste, um nur die Einträge anzuzeigen, die mit demS
Tag beginnen. DasS
Tag kennzeichnet eine Datei mit dem Status "Arbeitsbaum überspringen". Eine vollständige Liste der Dateistatus finden Sie untergit ls-files
: Informationen zur-t
Option finden Sie in der Dokumentationgit ls-files
.quelle
'!git ls-files -v | grep "^S"'
? Der Befehl funktioniert bei mir dort nicht .. und scheint gut zu funktionieren, wenn er entfernt wurde.Expansion of alias 'ignored' failed; 'git' is not a git command
. Das macht Sinn; ohne das Ausrufezeichen: git aliasiert Ihren Befehl angit git ls-files …
.git ignore <filename>
gilt dies nur für dieses Verzeichnis , wenn Sie den obigen Alias ausführen . Und wenn Sie endlich Ihre Änderungen an dieser Datei vornehmen und festschreiben und auf Remote übertragen möchten, verwenden Sie einfach das Handy,git unignore <filename>
um sie vorübergehend erneut zu verfolgen! Vielen Dank!Sie können einfach eine .gitignore-Datei zu Ihrem Home-Verzeichnis hinzufügen, dh
$HOME/.gitignore
oder~/.gitignore
. Dann weisen Sie git an, diese Datei mit dem folgenden Befehl zu verwenden:Dies ist eine normale .gitignore-Datei, auf die git verweist, wenn entschieden wird, was ignoriert werden soll. Da es sich in Ihrem Home-Verzeichnis befindet, gilt es nur für Sie und verschmutzt keine .gitignore-Projektdateien.
Ich verwende diesen Ansatz seit Jahren mit großartigen Ergebnissen.
quelle
git check-ignore <file-name>
zur Überprüfung. LMK, wenn es für Sie funktioniert=
:git config --global core.excludesfile ~/.gitignore
.gitignore
Datei in das Home-Verzeichnis gestellt und git angewiesen, diese Datei stattdessen zu verwenden. Dann habe ich die Dateien gelöscht, die ich lokal entfernen möchte. Nachdem ich die Änderungen übernommen habe, hat das Remote-Repository diese Dateien jedoch auch gelöscht. Habe ich etwas falsch gemacht?.gitignore
Hier geht es darum, Dateien zu ignorieren, die in Ihrem lokalen Verzeichnis vorhanden sind. Was Sie hätten tun sollen, istgit rm --cached
, sie aus dem Repo zu entfernen, sie aber in Ihrer Nähe zu belassen. Sie sollten in der Lage sein, zu Ihrem vorherigen Commit zurückzukehrengit reset --soft HEAD^
, indem Sie dieses Commit rückgängig machen und Ihre Dateien wiederherstellen. Das ist das Schöne an Git: Es ist alles noch da in deiner Git-Geschichte.Um nicht verfolgte Dateien zu ignorieren, insbesondere wenn sie sich in (einigen) Ordnern befinden, die nicht verfolgt werden, besteht eine einfache Lösung darin
.gitignore
, jedem nicht verfolgten Ordner eine Datei hinzuzufügen und eine einzelne Zeile*
gefolgt von einer neuen Zeile einzugeben . Es ist eine wirklich einfache und unkomplizierte Lösung, wenn sich die nicht verfolgten Dateien in wenigen Ordnern befinden. Für mich kamen alle Dateien aus einem einzigen nicht verfolgten Ordnervendor
und die oben genannten funktionierten einfach.quelle
Wenn Ihr Repo noch keine .gitignore-Datei hat, besteht eine einfache Lösung darin, eine .gitignore-Datei zu erstellen und diese
.gitignore
zur Liste der zu ignorierenden Dateien hinzuzufügen .quelle
.gitignore
Datei. Aber meine schmutzigen Dateien befinden sich in einem tiefen Ordner, deshalb habe ich meine eigenen.gitignore
daneben hinzugefügt . +1