Entferne eine Datei mit einem seltsamen Namen von git

8

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 git add "test/fixtures..." oder git rm "test/fixtures..." versuche, scheitert es:
fatal: pathspec 'test/fixtures/companies.yml200companies.yml' did not match any files

Wie kann ich damit umgehen?

Git-Status

%Vor%     
sscirrus 06.11.2012, 12:02
quelle

3 Antworten

10
___ 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%     
___ antwort13250936 ___

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.

    
___ answer13251287 ___

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!

    
___
pndc 06.11.2012, 12:21
quelle
11

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.

    
VonC 06.11.2012 12:40
quelle
1

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!

    
Andrushenko Alexander 29.01.2017 15:14
quelle

Tags und Links