
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
git add -u
git reset -- main/dontcheckmein.txt

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/*'

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 .gitignore
fü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_global
es 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 MyProject
wird die lokale Datei überschrieben ~/.gitignore_global
was 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…
Für eine Datei
git add -u
git reset -- main/dontcheckmein.txt
Für einen Ordner
git add -u
git reset -- main/*

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.

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

Daniel Danielecki
git add .
git reset main/dontcheckmein.txt
9172400cookie-checkAlle Dateien außer einer einzelnen Datei zu einem Commit hinzufügen?yes
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