861 Stimmen

Alle Dateien zu einer Übergabe hinzufügen, außer einer einzelnen Datei?

Ich habe eine Reihe von Dateien in einem Changeset, aber ich möchte gezielt eine einzelne geänderte Datei ignorieren. So sieht es aus nach git status :

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

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

git add -u -except main/dontcheckmein.txt

4voto

Nick Punkte 31

alle Dateien hinzufügen

git add .

Dateipfad abrufen und unten einfügen

Git-Status

aus dem Commit entfernen

git reset -- datei/nach/pfad/datei-zu-ignorieren.txt

3voto

cegas Punkte 2625

Für den speziellen Fall in der Frage wäre es am einfachsten, alle Dateien mit .c Erweiterung und lassen Sie alles andere weg:

git add *.c

De git-scm (oder/und man git add ):

git add <pathspec>

Dateien, aus denen Inhalte hinzugefügt werden können. Dateiklumpen (z.B. *.c) können angegeben werden, um alle passenden Dateien hinzuzufügen. <...>

Beachten Sie, dass dies bedeutet, dass Sie auch etwas tun könnten wie:

git add **/main/*

um alle Dateien (die nicht ignoriert werden) hinzuzufügen, die sich im Verzeichnis main Ordner. Sie können sich auch mit aufwändigeren Mustern austoben:

git add **/s?c/*Service*

Der obige Befehl fügt alle Dateien hinzu, die sich in s(any char)c Ordner und haben Service irgendwo in ihrem Dateinamen.

Natürlich sind Sie nicht auf ein Muster pro Befehl beschränkt. Das heißt, Sie könnten git auffordern, alle Dateien mit der Erweiterung .c y .h :

git add *.c *.h

Ce site リンク könnte Ihnen einige weitere Ideen für Glob-Muster liefern.

Ich finde es besonders nützlich, wenn ich viele Änderungen vornehme, aber trotzdem möchte, dass meine Commits atomar bleiben und einen schrittweisen Prozess widerspiegeln und nicht ein Sammelsurium von Änderungen, an denen ich gerade arbeite. Natürlich überwiegen ab einem gewissen Punkt die Kosten für die Entwicklung komplizierter Muster die Kosten für das Hinzufügen von Dateien mit einfacheren Methoden oder sogar einer Datei nach der anderen. Meistens gelingt es mir jedoch leicht, mit einem einfachen Muster nur die Dateien zu finden, die ich brauche, und alles andere auszuschließen.

Übrigens, Sie Mai Sie müssen Ihre Glob-Muster zitieren, damit sie funktionieren, aber das war bei mir nie der Fall.

2voto

Abdullah Aman Punkte 1034

Versuchen Sie dies:

git checkout -- main/dontcheckmein.txt

1voto

Simeon Punkte 586

Nicht direkt das, was Sie wollten, da es nicht mit einem einzigen Befehl zu erreichen, aber das Ergebnis sollte sein, was Sie wünschen.

Nach dem Hinzufügen aller Dateien zum Staging-Bereich über

git add -u

Eingabe von git status wird Ihnen vorschlagen

git restore --staged main/dontcheckmein.txt

0voto

colin rickels Punkte 639

Zu übernehmende Änderungen: (verwenden Sie "git reset HEAD ..." zum Aufheben der Übergabe)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X