it-swarm.com.de

Git Update-Index rückgängig machen --assume-unverändert <Datei>

Die Art und Weise, wie Sie Git ignorieren, um ein bestimmtes Verzeichnis oder eine bestimmte Datei zu verfolgen. Sie führen einfach das aus:

git update-index --assume-unchanged <file>

Nun, wie macht man es rückgängig, damit sie wieder gesehen werden? (Nennen wir es nicht anzunehmen.)

374
adardesign

Um rückgängig zu machen/zeigen Sie die/-Dateien, für die angenommen wird, dass sie unverändert bleiben, führen Sie Folgendes aus: :

git update-index --no-assume-unchanged <file>

Um eine Liste von dir's/-Dateien zu erhalten, die assume-unchanged sind, führe folgendes aus: :

git ls-files -v|grep '^h'

491
adardesign

Wenn dies ein Befehl ist, den Sie häufig verwenden, möchten Sie möglicherweise auch einen Alias ​​verwenden. Fügen Sie Ihrem globalen .gitconfig hinzu:

[alias]
    hide = update-index --assume-unchanged
    unhide = update-index --no-assume-unchanged

Nachdem Sie dies in Ihrem .gitconfig gespeichert haben, können Sie einen saubereren Befehl ausführen.

git hide myfile.ext

oder

git unhide myfile.ext

Diese Ressource war sehr hilfreich

77
adswebwork

die Update-Index-Funktion von git hat mehrere Optionen, die Sie wie folgt eingeben können:

git update-index --help

Hier finden Sie verschiedene Möglichkeiten - wie mit der Funktion Update-Index umzugehen ist. 

[wenn Sie den Dateinamen nicht kennen]

git update-index --really-refresh 

[wenn Sie den Dateinamen kennen]

git update-index --no-assume-unchanged <file>

setzt alle Dateien zurück, die in der Ignorierliste hinzugefügt wurden.

git update-index --assume-unchanged <file>
36

Ich nehme an (heh) Sie meinten --assume-unchanged, da ich keine --assume-changed-Option sehe. Die Umkehrung von --assume-unchanged ist --no-assume-unchanged.

32
hobbs

Um die hervorragenden Originalantworten von @adardesign, @adswebwork und @AnkitVishwakarma sowie die Kommentare von @Bdoserror, @Retsam und @seanf mit zusätzlichen Dokumentationslinks und prägnanten Aliasen zusammenzufassen ...

Grundlegende Befehle

Um eine Datei zurückzusetzen das ist angenommen-unverändert wieder normal:

git update-index --no-assume-unchanged <file>

An alle auflisten Dateien, die als unverändert gelten:

git ls-files -v | grep '^[a-z]' | cut -c3-

Um alle zurücksetzen unveränderte Dateien wieder normal zu machen:

git update-index --really-refresh

Verknüpfungen

Um die Ausführung dieser allgemeinen Aufgaben in git zu vereinfachen, fügen Sie den folgenden Abschnitt alias zu .gitconfig Für Ihren Benutzer hinzu (z. B. ~/.gitconfig Auf einem * nix- oder macOS-System) ):

[alias]
    hide = update-index --assume-unchanged
    unhide = update-index --no-assume-unchanged
    unhide-all = update-index --really-refresh
    hidden = ! git ls-files -v | grep '^[a-z]' | cut -c3-
21
Will Cain

Wenn Sie alle Dateien, die angewendet wurden, rückgängig machen möchten, und dabei einen beliebigen Status annehmen, der nicht nur zwischengespeichert wird (git markiert sie nach Buchstaben in Kleinschreibung), können Sie den folgenden Befehl verwenden:

git ls-files -v | grep '^[a-z]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
  1. git ls-files -v druckt alle Dateien mit ihrem Status
  2. grep '^[a-z]' filtert Dateien und wählt nur unverändert aus
  3. cut -c 3- entfernt den Status und lässt nur Pfade zurück, wobei er vom 3. Zeichen bis zum Ende geht
  4. tr '\012' '\000' ersetzt das Zeilenendezeichen (\ 012) durch das Nullzeichen (\ 000)
  5. xargs -0 git update-index --no-assume-unchanged übergibt alle durch Nullzeichen getrennten Pfade an git update-index --no-assume-unchanged, um sie rückgängig zu machen
15
C0DEF52

Wenn Sie zu @adardesigns Antwort hinzufügen, können Sie, wenn Sie alle Dateien, die zu assume-unchanged list hinzugefügt wurden, auf einmal in no-assume-unchanged zurücksetzen möchten, folgende Schritte ausführen:

git ls-files -v | grep '^h' | sed 's/^..//' | sed 's/\ /\\ /g' | xargs -I FILE git update-index --no-assume-unchanged FILE || true

Dadurch werden nur die beiden Zeichen aus grep entfernt, d. H. "h ", und es werden eventuell vorhandene Leerzeichen in Dateinamen ausgeblendet. Schließlich wird || true verhindern, dass der Befehl vorzeitig beendet wird, falls einige Dateien in der Schleife Fehler aufweisen.

11
sagunms

Wenn Sie Git Extensions verwenden, führen Sie die folgenden Schritte aus:

  1. Gehen Sie zum Commit-Fenster. 
  2. Klicken Sie auf die Dropdown-Liste mit dem Namen Arbeitsverzeichnisänderungen .
  3. Wählen Sie Zeigt Dateien an, die nicht geändert wurden Option.
  4. Klicken Sie mit der rechten Maustaste auf die Datei, deren Zuordnung Sie aufheben möchten.
  5. Wählen Sie Nehmen Sie keine Änderungen vor .

Du bist fertig.

2
Shivang Gupta

Nichts hier ist nicht abgedeckt. Möchte aber meine 2 Cent hinzufügen. Manchmal führe ich einen Build aus, und es werden viele Dateien geändert, und dann möchte ich an etwas arbeiten, daher hilft mir dieser Befehl wirklich sehr.

git update-index --assume-unchanged `git status | grep modified | sed 's|modified:||g'| xargs`

Hoffe, jemand anderes findet es auch nützlich.

0
Tyagi Akhilesh