Die Art und Weise, wie Sie das Beobachten / Verfolgen eines bestimmten Verzeichnisses / einer bestimmten Datei ignorieren. Sie führen einfach Folgendes aus:
git update-index --assume-unchanged <file>
Wie machst du es nun rückgängig, damit sie wieder beobachtet werden? (Nennen wir es nicht angenommen.)
git
version-control
git-index
Adardesign
quelle
quelle
Antworten:
Führen Sie Folgendes aus, um die / Dateien des Verzeichnisses rückgängig zu machen / anzuzeigen, die auf unverändert gesetzt sind :
git update-index --no-assume-unchanged <file>
So erhalten Sie eine Liste der Verzeichnisse / Dateien, die
assume-unchanged
ausgeführt werden :git ls-files -v|grep '^h'
quelle
git ls-files -v|grep '^h'|cut -c3-
, dass Sie nur die Dateinamen ohne das Präfix "h" erhalten.assume-unchanged
, nicht mehr kennen, verwenden Sie einfachgit update-index --really-refresh
. Mit diesem Befehl müssen Sie nicht zuerst nach den Dateien suchengit ls-files
.Wenn dies ein Befehl ist, den Sie häufig verwenden, sollten Sie auch einen Alias dafür in Betracht ziehen. Fügen Sie Ihrem globalen hinzu
.gitconfig
:So legen Sie einen Alias fest (falls Sie es noch nicht wissen):
Beispiel:
Nachdem Sie dies in Ihrem gespeichert haben
.gitconfig
, können Sie einen Cleaner-Befehl ausführen.oder
Diese Git-Dokumentation war sehr hilfreich.
Laut den Kommentaren ist dies auch ein hilfreicher Alias, um herauszufinden, welche Dateien derzeit versteckt sind:
quelle
hidden = ! git ls-files -v | grep '^h' | cut -c3-
Die Funktion git update-index bietet mehrere Optionen, die Sie wie folgt eingeben können:
Hier finden Sie verschiedene Möglichkeiten - wie man mit der Funktion update-index umgeht.
[wenn Sie den Dateinamen nicht kennen]
[wenn Sie den Dateinamen kennen]
setzt alle Dateien zurück, die in der Ignorierliste hinzugefügt wurden.
quelle
git update-index --no-assume-unchanged <file>
hat mein Leben gerettet .. ok, ich konnte den Ordner einfach wieder synchronisieren, aber ich wollte eine "echte" Lösung für dieses Problem.Ich nehme an (heh) du meintest
--assume-unchanged
, da ich keine--assume-changed
Option sehe . Die Umkehrung von--assume-unchanged
ist--no-assume-unchanged
.quelle
Um die hervorragenden Originalantworten von @adardesign, @adswebwork und @AnkitVishwakarma sowie die Kommentare von @Bdoserror, @Retsam, @seanf und @torek mit zusätzlichen Dokumentationslinks und präzisen Aliasnamen zusammenzufassen ...
Grundlegende Befehle
So setzen Sie eine Datei zurück , die unverändert wieder normal ist:
So listen Sie alle Dateien auf, die unverändert bleiben:
So setzen Sie alle angenommenen unveränderten Dateien wieder auf den Normalwert zurück:
Hinweis: Dieser Befehl, der an anderer Stelle aufgeführt wurde, scheint nicht mehr alle angenommenen unveränderten Dateien zurückzusetzen (ich glaube, er wurde früher verwendet und zuvor als Lösung aufgeführt):
Verknüpfungen
Fügen Sie den folgenden Alias- Abschnitt
.gitconfig
für Ihren Benutzer hinzu (z. B.~/.gitconfig
auf einem * nix- oder macOS-System) , um die Ausführung dieser allgemeinen Aufgaben in git zu vereinfachen.quelle
git hidden
Sie können den gleichen Effekt ohne Shell-Aliase oder Skripte erzielen, indem Sie!
hidden = ! git ls-files -v | grep '^h' | cut -c3-
--really-refresh
löscht die angenommenen unveränderten Flags in Indexdateien nicht (oder nicht mehr, vielleicht einmal).Wenn Sie alle angewendeten Dateien rückgängig machen möchten, nehmen Sie an, dass sie mit einem beliebigen Status unverändert und nicht nur zwischengespeichert sind (git markiert sie in Kleinbuchstaben durch Zeichen), und verwenden den folgenden Befehl:
git ls-files -v
druckt alle Dateien mit ihrem Statusgrep '^[a-z]'
filtert Dateien und wählt nur unverändert auscut -c 3-
Entfernt den Status und lässt nur Pfade übrig, wobei vom 3. Zeichen bis zum Ende geschnitten wirdtr '\012' '\000'
ersetzt das Zeilenendezeichen (\ 012) durch das Nullzeichen (\ 000)xargs -0 git update-index --no-assume-unchanged
Übergibt alle durch Null getrennten Pfade an,git update-index --no-assume-unchanged
um rückgängig zu machenquelle
Wenn
@adardesign
Sie die Antwort hinzufügen möchten , können Sie Folgendes tun , wenn Sie alle Dateien, die zurassume-unchanged
Liste hinzugefügt wurden, auf einmal zurücksetzen möchtenno-assume-unchanged
:Dadurch werden nur die beiden von grep ausgegebenen Zeichen entfernt, dh
"h "
Leerzeichen, die möglicherweise in Dateinamen vorhanden sind, werden entfernt, und schließlich|| true
wird verhindert, dass der Befehl vorzeitig beendet wird, falls einige Dateien in der Schleife Fehler aufweisen.quelle
Wenn Sie Git Extensions verwenden , führen Sie die folgenden Schritte aus:
Du bist fertig.
quelle
Nichts hier, was nicht abgedeckt ist. Möchte aber meine 2 Cent hinzufügen. Manchmal führe ich einen Build aus und er ändert viele Dateien und dann möchte ich an etwas arbeiten, daher hilft mir dieser Befehl sehr.
git update-index --assume-unchanged `git status | grep modified | sed 's|modified:||g'| xargs`
Hoffe, jemand anderes findet es auch nützlich.
quelle
.gitignore
Ihre Build-Artefakte ignorieren würden ..gitignore
aber das ist manchmal, meiner Erfahrung nach nicht ausreichend. Aber ich verstehe den Kontext, in dem Sie dies sagen.Keine der Lösungen funktionierte für mich in Windows - es scheint
H
eher Großbuchstaben alsh
für den Dateistatus zu verwenden, und der Befehl grep erfordert ein zusätzliches Caret, das^
auch den Zeilenanfang darstellt und das nächste Zeichen negiert.Windows-Lösung
git ls-files -v | grep '^^H'
um alle nicht zwischengespeicherten Dateien aufzulistengit ls-files -v | grep '^^H' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree
um das Überspringen aller Dateien rückgängig zu machen, die über ausgeführt wurdenupdate-index --skip-worktree
git ls-files -v | grep '^^H]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
um das Überspringen aller Dateien rückgängig zu machen, die über ausgeführt wurdenupdate-index --assume-unchanged
git ls-files -v | grep '^^H'
um alle nicht zwischengespeicherten Dateien erneut aufzulisten und zu überprüfen, ob die oben genannten Befehle funktioniert haben - dies sollte jetzt nichts zurückgebenquelle
Wenn Sie Eclipse verwenden, kann Folgendes hilfreich sein:
quelle