Alle Dateien außer einer einzelnen Datei zu einem Commit hinzufügen?

Lesezeit: 7 Minuten

Alle Dateien auser einer einzelnen Datei zu einem Commit hinzufugen
Benutzer291701

Ich habe eine Reihe von Dateien in einem Änderungssatz, aber ich möchte speziell eine einzelne geänderte Datei ignorieren. Sieht danach so aus git status:

# modified:   main/dontcheckmein.txt
# deleted:    main/plzcheckmein.c
# deleted:    main/plzcheckmein2.c
...

Gibt es eine Möglichkeit, die ich tun kann git add aber einfach die eine Textdatei ignorieren, die ich nicht anfassen möchte? Etwas wie:

git add -u -except main/dontcheckmein.txt

  • was ist der zweck -u Flagge, es funktioniert ohne -u

    – Saad Abbasi

    17. September 2020 um 3:23 Uhr

  • Von man git fügen Sie hinzu: -u, –update “Aktualisiert den Index genau dort, wo er bereits einen Eintrag hat, der entspricht. Dadurch werden Indexeinträge entfernt und geändert, damit sie mit dem Arbeitsbaum übereinstimmen, aber es werden keine neuen Dateien hinzugefügt. … “

    – Simeon

    2. Februar 2021 um 9:14 Uhr


  • @SaadAbbasi Vielleicht diese Tabelle aus github.com/git-guides/git-add ist noch besser zu sagen, was -u tut: git add -u: stages new and modified files only, NOT deleted files

    – Simeon

    2. Februar 2021 um 9:28 Uhr


  • Wenn Sie nicht verfolgte Dateien haben, sorgt die Option -u dafür, dass diese nicht verfolgten Dateien nicht hinzugefügt werden. git add –all würde diese Dateien ebenfalls hinzufügen.

    – Simeon

    2. Februar 2021 um 9:37 Uhr

git add -u
git reset -- main/dontcheckmein.txt

  • Wie schließe ich den ganzen Ordner aus? — main oder main/ oder main/* ?

    – Alan Coromano

    23. November 2013 um 9:08 Uhr

  • @MariusKavansky Sie können alle diese Formulare verwenden. Wenn du benutzt main/* es ist notwendig, hinzuzufügen -- davor, um Git wissen zu lassen, dass es sich um einen Pfad handelt. Die beiden anderen Varianten funktionieren ohne Einbeziehung der beiden Bindestriche. (Getestet in der Eingabeaufforderung unter Windows 7 mit msysGit)

    – Dennis van der Schagt

    8. November 2014 um 14:06 Uhr

  • Wenn Sie einige Ordner haben, die Sie ausschließen möchten, die eine große Menge an Dateien oder anderen Ordnern enthalten: fügen Sie sie vorübergehend zu Ihrem Gitignore hinzu. Ausführen von a git reset für diese Ordner wird es danach immer noch funktionieren, aber es wird lange dauern, bis Git die großen Ordner hinzugefügt hat.

    – Michael Trouv

    13. Mai 2015 um 13:24 Uhr

  • Es gibt also keinen Einzeiler?

    – BroVic

    13. Juli 2018 um 12:54 Uhr

  • @Ben Jackson wäre nett, jede Zeile zu kommentieren, findest du nicht?

    – ed1nh0

    25. September 2018 um 12:58 Uhr

Alle Dateien auser einer einzelnen Datei zu einem Commit hinzufugen
Katzenaugen

Jetzt git unterstützt exclude certain paths and files durch Pathspec-Magie :(exclude) und seine Kurzform :!. Sie können es also leicht mit dem folgenden Befehl erreichen.

git add --all -- :!main/dontcheckmein.txt
git add -- . :!main/dontcheckmein.txt

Eigentlich können Sie mehr angeben:

git add --all -- :!path/to/file1 :!path/to/file2 :!path/to/folder1/*
git add -- . :!path/to/file1 :!path/to/file2 :!path/to/folder1/*

Umschließen Sie für Mac und Linux jeden Datei-/Ordnerpfad mit Anführungszeichen

git add --all -- ':!path/to/file1' ':!path/to/file2' ':!path/to/folder1/*'

  • Die beste Antwort, danke! Zumindest für meinen Fall: Ich musste nur einen Dateityp ausschließen.

    – Andre Polykanine

    21. November 2018 um 14:31 Uhr

  • Das ist ausgezeichnet! Beachten Sie, dass Sie unter Linux die zitieren müssen :!... Klauseln, um zu verhindern, dass sich die Shell beschwert. Also zum Beispiel: git add --all -- ':!path/to/file1' ':!path/to/file2' ':!path/to/folder1/*'.

    – Martin_W

    9. Januar 2019 um 22:33 Uhr

  • Dies kollidiert mit etwas in zsh, funktioniert bei mir nicht unter macOS und dem neuesten Git.

    – Merlin

    5. Dezember 2019 um 23:30 Uhr

  • Beachten Sie, dass der Pfad relativ zum aktuellen Verzeichnis ist! dh wenn du dabei bist ./path/verwenden Sie einfach git add --all -- ':!to/file1'

    – Paulus

    7. August 2020 um 22:38 Uhr

  • Dies ist die beste Antwort. Wenn ein großer Ordner mit vielen Dateien ausgeschlossen werden muss, dauert das Hinzufügen und Zurücksetzen ewig. git add -- . ':!<path>' ist viel schneller.

    – jolammi

    29. Januar 2021 um 6:37 Uhr

Alle Dateien auser einer einzelnen Datei zu einem Commit hinzufugen
Wassermann-Kraft

1) Das Ignorieren von Änderungen an einer einzelnen, bereits versionierten Datei

git update-index --assume-unchanged "main/dontcheckmein.txt"

und das rückgängig zu machen git update-index --no-assume-unchanged "main/dontcheckmein.txt"

github docs, um Dateien zu ignorieren

2) Das vollständige Ignorieren einer bestimmten einzelnen Datei, die verhindert, dass sie im Repository erstellt wird

Sehen Sie sich zuerst diesen Stackoverflow-Beitrag an: Git Global Ignore funktioniert nicht

Im .gitignorefügen Sie der Datei den relativen Pfad ohne führenden hinzu ./.

Also, wenn Ihre Datei bei ist MyProject/MyFolder/myfile.txt(wo .git ist auch im MyProject Ordner), hinzufügen MyFolder/myfile.txt zu dir an .gitignore Datei.

Sie können bestätigen, welche Regeln mit Ignorieren über verknüpft sind git check-ignore "MyFolder/myfile.txt"

Über globales Ignorieren

Dieser Link spricht über ~/.gitignore_global, aber die Datei bezieht sich auf Ihr Projekt. Also, wenn Sie das Exclude-Muster setzen MyFolder/myfile.txt in ~/.gitignore_globales wird funktionieren, aber es wird nicht viel Sinn machen …

Auf der anderen Seite, wenn Sie Ihr Projekt mit einrichten git config core.excludesfile .gitignore wo .gitignore ist in MyProjectwird die lokale Datei überschrieben ~/.gitignore_globalwas haben kann sehr nützliche Regeln

Im Moment denke ich, dass es am besten ist, ein Skript zu erstellen, um Ihr zu mischen .gitignore mit ~/.gitignore_global bei .gitignore.

Eine letzte Warnung

Wenn sich die Datei, die Sie ignorieren möchten, bereits im Repository befindet, funktioniert diese Methode nur, wenn Sie dies tun: git rm "MyFolder/myfile.txt", aber sichern Sie es zuerst, da es auch lokal entfernt wird! Du kannst es später wieder kopieren…

  • Sie können verwenden git rm --cached MyFolder/myyfile.txt um die Datei aus dem Repository zu entfernen, aber lokal zu behalten. Erklärung auf help.github.com

    – Dennis van der Schagt

    8. November 2014 um 13:55 Uhr


  • Wie füge ich die Dateien wieder hinzu?

    – SagarM

    27. Mai 2021 um 11:25 Uhr

  • Ich frage mich, wo dieser Befehl git update-index --assume-unchanged "main/dontcheckmein.txt" wird in der git-Ordnerstruktur gespeichert

    – MaXi32

    24. Juli 2021 um 5:39 Uhr

Für eine Datei

git add -u
git reset -- main/dontcheckmein.txt

Für einen Ordner

git add -u
git reset -- main/*

1646263690 157 Alle Dateien auser einer einzelnen Datei zu einem Commit hinzufugen
Antonius Naddeo

Während Ben Jackson Recht hat, dachte ich, ich würde hinzufügen, wie ich diese Lösung auch verwendet habe. Unten ist ein sehr einfaches Skript, das ich verwende (das ich gitadd nenne), um alle Änderungen hinzuzufügen, mit Ausnahme einiger weniger, die ich in einer Datei namens .gittrackignore (sehr ähnlich wie .gitignore funktioniert).

#!/bin/bash
set -e

git add -A
git reset `cat .gittrackignore`

Und das ist, was mein Strom .gittrackignore sieht aus wie.

project.properties

Ich arbeite an einem Android-Projekt, das ich bei der Bereitstellung über die Befehlszeile kompiliere. Dieses Projekt hängt von SherlockActionBar ab, also muss es in project.properties referenziert werden, aber das bringt die Kompilierung durcheinander, also tippe ich jetzt einfach gitadd und fügen Sie alle Änderungen zu Git hinzu, ohne dass Sie jedes Mal project.properties entfernen müssen.

  • Ich wusste nicht was -- war bis zu deinem Kommentar. Laut den Manpages ist es optional und ändert das Ergebnis des Befehls nicht (zumindest in diesem Fall). Diese Frage scheint dies zu unterstützen, stackoverflow.com/questions/17800994/…. Korrigieren Sie mich, wenn ich falsch liege, aber es scheint, dass es bedeutet “behandeln Sie alles danach -- als Argumente, nicht Optionen / Schalter”

    – Anthony Naddeo

    19. Dezember 2013 um 20:41 Uhr


  • Schöne Verwendung von -- in git checkout Ich sehe in dieser Frage. Ich wusste bis zu unserem Austausch auch nicht, was der Doppelstrich war. Ich frage mich, ob die git checkout Mehrdeutigkeit zwischen Zweigen und Dateien könnte sich in dieser oder einer anderen Form auf git reset Auch.

    – Giulio Piancastelli

    20. Dezember 2013 um 0:06 Uhr

1646263690 90 Alle Dateien auser einer einzelnen Datei zu einem Commit hinzufugen
gsumk

Um die Änderung in der Datei zu behalten, aber nicht festzuschreiben, habe ich dies getan

git add .

git reset -- main/dontcheckmein.txt

git commit -m "commit message"

um die Datei zu überprüfen ist ausgeschlossen

git status

  • Ich wusste nicht was -- war bis zu deinem Kommentar. Laut den Manpages ist es optional und ändert das Ergebnis des Befehls nicht (zumindest in diesem Fall). Diese Frage scheint dies zu unterstützen, stackoverflow.com/questions/17800994/…. Korrigieren Sie mich, wenn ich falsch liege, aber es scheint, dass es bedeutet “behandeln Sie alles danach -- als Argumente, nicht Optionen / Schalter”

    – Anthony Naddeo

    19. Dezember 2013 um 20:41 Uhr


  • Schöne Verwendung von -- in git checkout Ich sehe in dieser Frage. Ich wusste bis zu unserem Austausch auch nicht, was der Doppelstrich war. Ich frage mich, ob die git checkout Mehrdeutigkeit zwischen Zweigen und Dateien könnte sich in dieser oder einer anderen Form auf git reset Auch.

    – Giulio Piancastelli

    20. Dezember 2013 um 0:06 Uhr

1646263691 469 Alle Dateien auser einer einzelnen Datei zu einem Commit hinzufugen
Daniel Danielecki

git add .
git reset main/dontcheckmein.txt

917240cookie-checkAlle Dateien außer einer einzelnen Datei zu einem Commit hinzufügen?

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

Privacy policy