___ qstnhdr ___ Entferne eine Datei mit einem seltsamen Namen von git
___ qstntxt ___
Ich habe eine Datei, die sich selbst benannt hat:
%Vor%
Aus ärgerlichen Gründen ist der Arbeitsbaum in diesem speziellen Projekt voll von anderen Dateien, die noch organisiert werden müssen. Ich möchte den obigen Eintrag hier raus holen, aber wenn ich test/fixtures/companies.yml
oder test/fixtures/companies.yml*companies.yml
versuche, scheitert es:
git add -u
Wie kann ich damit umgehen?
Git-Status
%Vor%
Git druckt die Literal-Oktette der UTF-8-Kodierung des Dateinamens, weil sie Nicht-ASCII-Zeichen sind, und druckt sie als Oktal-Escape-Zeichen. Ihre Shell versteht sie jedoch nicht und sendet beim Schneiden und Einfügen wörtliche Backslashes und Ziffern an den Befehl git, sodass Sie tatsächlich einen anderen Dateinamen eingeben.
Entweder benutzen Sie tab-completion nach Eingabe von git add .
(wenn Ihre Shell dies unterstützt), die die tatsächlichen Zeichen oder einen Platzhalter anstelle der Escape-Zeichen eingeben, also %code% . Letzteres könnte , stimmt aber wahrscheinlich nicht mit anderen Dateinamen überein.
Eine andere Möglichkeit besteht darin, die Datei einfach in etwas vernünftigeres umzubenennen, und dann %code% / %code% zu verwenden, damit git die Umbenennung bemerkt.
Da Sie sich in bash befinden, können Sie den Befehl printf verwenden:
%Vor%
Octal-Escapes, die mit \ 0 beginnen, können bis zu vier Ziffern enthalten.
(POSIX gibt bis zu drei an)
Sie können eine ähnliche Lösung bei " Git: wie man Dateinamen mit oktaler Notation in der Kommandozeile spezifiziert ".
Dadurch wird die Datei aus dem Index entfernt, während sie weiterhin im Arbeitsbaum bleibt.
Sie können es dann umbenennen, wenn Sie möchten.
___ tag123git ___ Git ist ein Open-Source-Versionskontrollsystem (DVCS). Verwenden Sie dieses Tag für Fragen zur Verwendung von Git und Workflows. Verwenden Sie dieses Tag nicht für allgemeine Programmierfragen, die ein Git-Repository betreffen.
___ answer41922406 ___
Ich wollte einen Ordner in meinem Git-Repository entfernen, dessen Name russische Buchstaben enthält: "Mailайлы Mail.Ru Агента". Zuerst löschte ich den Ordner manuell und wollte ihn in Git mit
löschen
%Vor%
Befehl im nächsten Schritt. Aber Git zeigte mir einen sehr akryptischen Namen des gelöschten Ordners:
"\ 320 \ 244 \ 320 \ 260 \ 320 \ 271 \ 320 \ 273 \ 321 \ 213 Mail.Ru \ 320 \ 220 \ 320 \ 263 \ 320 \ 265 \ 320 \ 275 \ 321 \ 202 \ 320 \ 260".
Ich habe den Ordner mit
wiederhergestellt
%Vor%
und dann einfach den Namen des Ordners kopiert und den Befehl
ausgeführt
%Vor%
Es hat funktioniert!