Gibt es eine Möglichkeit zu erzwingen git
um eine Datei trotz der hinzuzufügen .gitignore
Datei?
Erzwingen Sie das Hinzufügen trotz der .gitignore-Datei
Kennzeichen
Daniel Böhmer
Sehen man git-add
:
-f, --force
Allow adding otherwise ignored files.
Also führe das aus
git add --force my/ignore/file.foo
-
Uhm, das funktioniert nicht, im Git-Status wird die Datei immer noch nicht angezeigt
– Kennzeichen
5. November 2011 um 5:36 Uhr
-
Nun, ich habe es getestet, um sicherzustellen, dass es wirklich funktioniert und es funktioniert. Können Sie Ihre Umgebung (OS, Git-Version …) beschreiben? Das ist, was ich im Grunde getan habe:
echo "/foo" >> .gitignore; echo "bar" > foo; git add foo # should throw an error; git add -p foo # works
(kann keine Zeilenumbrüche in Kommentare einfügen, führe die Befehle 1 nach 1 aus– Daniel Böhmer
5. November 2011 um 10:26 Uhr
-
Dasselbe ist mir passiert, ich hatte zuvor git update-index –asume-unchanged für meine Dateien ausgeführt. Ich musste es mit –no-assume-unchanged rückgängig machen und es funktionierte
– Jako
28. August 2015 um 20:47 Uhr
-
Dies funktioniert bei mir nur mit Platzhaltern und mit git 1.9.5 unter Windows, selbst nachdem ich versucht habe –no–assume-unchanged. “git add – f
” tut nichts, aber “git add -f *” funktioniert. Die Verwendung von TortoiseGit funktioniert auch. – mhenry1384
12. Oktober 2015 um 21:04 Uhr
-
@mhenry1384 Der Grund dafür, dass es nur für Platzhalter in Windows funktioniert, kann an der Verwendung des Pfadtrennzeichens liegen. Bei mir funktioniert der Schrägstrich “/”, aber der Backslash “\” nicht. Die Tatsache, dass cmd/PowerShell „/“ in „\“ für uns umwandelt, macht es einfach, darauf zu stoßen.
– ohh
18. Oktober 2015 um 22:47 Uhr
ALS
Trotz der funktionierenden Lösung von Daniel Böhmer bot Ohad Schneider in einem Kommentar eine bessere Lösung an:
Wenn die Datei normalerweise ignoriert wird und Sie das Hinzufügen erzwingen, kann sie in Zukunft versehentlich erneut ignoriert werden (z. B. wenn die Datei gelöscht wird, dann wird ein Commit durchgeführt und die Datei neu erstellt.
Sie sollten die Ignorierung einfach in der .gitignore-Datei wie folgt aufheben: Unterverzeichnisse von ignorierten Verzeichnissen in Git aufheben
-
Das ist richtig. Ich habe die Option –force für kleine Datendateien verwendet und dann die Ordnerstruktur ein wenig neu angeordnet und alle Force-Tracked-Dateien geschrottet. ABER: ein
.gitignore
verwenden!specific-file-name.txt
Ohne die Ordnerhierarchie folgt die Nachverfolgung auf diese Weise der Datei um das Repo herum.– Merlin
27. Oktober 2017 um 7:13 Uhr
-
Es hängt vom Szenario ab, z. B. möchten Sie manchmal “1.txt” in allen Ordnern ausschließen und manchmal “Ordner1/*.txt”
– ALS
27. Oktober 2017 um 22:03 Uhr
-
Das ist keine “bessere” Lösung. Es ist eine Lösung für ein anderes Problem.
– aij
23. März 2018 um 13:46 Uhr
-
@aij – Ich bin anderer Meinung, meine Antwort bietet eine weitere “Möglichkeit, Git zu zwingen, trotz der (aktuellen Status) .gitignore-Datei eine Datei hinzuzufügen”. Obwohl der zusätzliche Text in Klammern von mir hinzugefügt wurde, ist er meiner Meinung nach auch aus dem Text der Frage impliziert. Wie auch immer, ich denke, dass dies auch eine wichtige Information für jeden ist, der die Verwendung der Option “–force” in Betracht zieht
– ALS
29. Oktober 2020 um 15:01 Uhr
Gabriel Staples
So deaktivieren Sie einige ausgewählte Inhalte (Dateien oder Ordner) in einer ignoriert Mappe
Wenn Sie das ignoriert haben Inhalt von ein Verzeichnis wie dieses:
/ignored_dir/* # ignore the **contents of** this dir!
dann können Sie eine Datei oder ein Verzeichnis darin wie folgt UNignorieren:
!/ignored_dir/special_file_to_include # Do NOT ignore this file--DO include it!
!/ignored_dir/special_dir_to_include/ # And do NOT ignore this dir--DO include it!
ABER, wenn Sie das “ignored_dir” ignoriert haben direkt stattdessen so:
/ignored_dir/ # ignore this directory **directly**
dann das oben !
Regeln, die versuchen, einige Dateien oder Ordner zu ignorieren, funktionieren NICHT! Wechseln Sie in diesem Fall also von der Verwendung dieses Stils: /ignored_dir/
zu diesem Stil: /ignored_dir/*
und fügen Sie dann Ihre hinzu !
Regeln wie oben gezeigt, um etwas in diesem Verzeichnis zu UNignorieren!
Verweise:
- Unignorieren von Unterverzeichnissen von ignorierten Verzeichnissen in Git
- [my eRCaGuy_dotfiles repo with an example .gitignore file containing these notes and demos]: eRCaGuy_dotfiles/.gitignore
-
Dies könnte als Bearbeitung (wenn auch ziemlich umfangreich) der obigen AS-Antwort besser gewesen sein, da es sich um dieselbe Antwort handelt und diese 24 Stimmen hat und daher immer höher erscheinen wird. (Ihre Version davon ist jedoch viel hilfreicher.)
– Darren Cook
2. Juni 2021 um 8:36 Uhr
-
@DarrenCook, ich wollte die Antwort eines anderen nicht umfassend bearbeiten. Einer der Hauptanreize von Stack Overflow ist das persönliche Eigentum an Antworten und Inhalten, und große Änderungen stören das. Ich denke, meine Antwort ist auch viel hilfreicher, und ich hoffe, dass ich selbst das Eigentum daran behalten kann, um es so zu machen, wie ich es mag, und dabei etwas Anerkennung zu bekommen. Wenn Leute wie Sie es positiv bewerten, wird es schließlich nach oben schweben. Ich habe es dutzende Male gesehen. Ich habe es hinzugefügt, weil es neue und fehlende Inhalte und Einblicke bietet, die auf dieser Seite noch nicht vorhanden waren.
– Gabriel Staples
2. Juni 2021 um 9:02 Uhr
Eine andere Möglichkeit, dies zu erreichen, wäre, die Gitignore-Datei vorübergehend zu bearbeiten, die Datei hinzuzufügen und dann die Gitignore zurückzusetzen. Ein bisschen hacky fühle ich mich
Eine bessere Frage könnte sein – warum würden Sie das tun wollen? Wenn Sie möchten, dass eine Datei nachverfolgt wird, heben Sie die Ignorierung auf (präfixieren Sie ihr Muster in der
.gitignore
Datei mit!
z.B!dont/ignore/this/file
).– Ohad Schneider
7. September 2015 um 12:57 Uhr
@OhadSchneider Dies ist nützlich, wenn Sie das Commit von Build-Dateien in einen anderen Zweig erzwingen. Einige Projekte tun dies, z. B. StrongLoop für sichere Bereitstellungen
– Deminetix
21. Dezember 2015 um 2:15 Uhr
@OhadSchneider Für uns liegt es eher daran, dass die meisten Entwickler Git mit Visual Studio 2015 installieren, wodurch dem Benutzerordner ein globales Gitignore hinzugefügt wird. Davon ausgenommen sind Dateien wie *.dll und *.exe. Das ist großartig für unsere neuen Projekte, die nur Nuget-Pakete verwenden, die während des Builds abgerufen werden, aber für eine kleine Anzahl älterer Projekte verwenden wir immer noch DLLs, auf die in der Projektmappe manuell verwiesen wird. Für diese Projekte möchten wir sie manuell einbinden, anstatt jeden Entwickler anzuweisen, die *.dll- und *.exe-Dateien im globalen Gitignore zu kommentieren.
– Nullius
17. Februar 2016 um 9:11 Uhr
@Nullius Kannst du sie nicht einfach auf einer höheren Ebene ignorieren
.gitignore
(sagen wir, füge a hinzu.gitignore
im selben Ordner wie die DLL oder in einem darüber oder so)?– Ohad Schneider
17. Februar 2016 um 13:41 Uhr