Erzwingen Sie das Hinzufügen trotz der .gitignore-Datei

Lesezeit: 5 Minuten

Erzwingen Sie das Hinzufugen trotz der gitignore Datei
Kennzeichen

Gibt es eine Möglichkeit zu erzwingen git um eine Datei trotz der hinzuzufügen .gitignore Datei?

  • 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


Erzwingen Sie das Hinzufugen trotz der gitignore Datei
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

1646312889 669 Erzwingen Sie das Hinzufugen trotz der gitignore Datei
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

1646312889 490 Erzwingen Sie das Hinzufugen trotz der gitignore Datei
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:

  1. Unignorieren von Unterverzeichnissen von ignorierten Verzeichnissen in Git
  2. [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

923690cookie-checkErzwingen Sie das Hinzufügen trotz der .gitignore-Datei

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy