Vor einiger Zeit habe ich dies getan, um Änderungen an einer von git verfolgten Datei zu ignorieren:
git update-index --skip-worktree <file>
Jetzt möchte ich tatsächlich Änderungen an dieser Datei in die Quelle übernehmen. Wie mache ich die Auswirkungen von rückgängig skip-worktree
?
Antworten:
Aha! Ich möchte einfach:
quelle
Verwenden Sie laut http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html
git ls-files -v
um die mit einem Sonderbuchstaben gekennzeichneten Dateien "unverändert annehmen" und "Arbeitsbaum überspringen" anzuzeigen. Die "skip-worktree" -Dateien sind mit gekennzeichnet
S
.Bearbeiten : Wie @amacleod bereits erwähnt hat, ist es ein guter Trick , einen Alias zum Auflisten aller versteckten Dateien zu erstellen , damit Sie sich nicht daran erinnern müssen. Ich benutze
alias hidden="git ls-files -v | grep '^S'"
in meinem .bash_profile. Es funktioniert super!quelle
git ls-files -v | grep '^S'
nur Dateien auflisten, die ich mit skip-worktree "versteckt" habe. Ich hoffte, einen Alias für diesen Befehl "versteckt" zu machen, aber das Einfügen einer Pipe-Umleitung in den Alias schien nicht zu funktionieren.!
. So[alias] ignored = !git ls-files -v | grep "^S"
funktioniert Getestet.grep
weiß ich nicht. Kommt auf deine Muschel an, denke ich. Git Bash kommt mitgrep
, denke ich.'
funktionierte nicht,"
tat es aber, dhgit ls-files -v | grep "^S"
Wenn Sie alle angewendeten Dateien rückgängig machen möchten, können Sie den folgenden Befehl verwenden:
git ls-files -v
druckt alle Dateien mit ihrem Statusgrep -i ^S
filtert Dateien und wählt nur Arbeitsbaum (S) überspringen oder Arbeitsbaum überspringen aus und nimmt unveränderte (n) an. -i bedeutet, Groß- und Kleinschreibung ignorierencut -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-skip-worktree
Übergibt alle durch Null getrennten Pfade an,git update-index --no-skip-worktree
um rückgängig zu machenquelle
Basierend auf der @ GuidC0DE-Antwort ist hier eine Version für Powershell (ich benutze posh-git )
Und als Referenz auch den entgegengesetzten Befehl zum Ausblenden der Dateien:
quelle
Für diejenigen, die Tortoise Git verwenden:
TortoiseGit > Check for modifications
Show ignore local changes flagged files
. Sie sollten die Datei sehen, die Sie ignoriert haben (oder alle Dateien, die Sie ignoriert haben, wenn Sie mit der rechten Maustaste auf den Ordner geklickt haben).Unflag as skip-worktree and assume-unchanged
quelle
Für alle, die Bash-Aliase lieben, ist hier mein Set, um sie alle zu regieren (basierend auf C0DEF52).
quelle