Bearbeiten Sie die Datei direkt, ohne die Zeilenenden zu ändern

Bearbeiten Sie die Datei direkt, ohne die Zeilenenden zu ändern

Ich muss Quellen unter Git-Versionskontrolle ändern. Die Quellen sind Visual Studio-Projektdateien, was sie zu nativen Microsoft-Dateien macht. Ich möchtevermeidenProbleme mit Leerzeichen, einschließlich Spielen am Zeilenende.

Ich habe mir die Dateien vor der Änderung unter Emacs angesehen und die^Mwar offensichtlich nicht vorhanden.

Anschließend habe ich Folgendes über ein Skript auf einer Linux-Maschine ausgeführt:

sed -i 's/odbc32.lib //g' *.vcproj
sed -i 's/odbccp32.lib //g' *.vcproj

Wenn ich mir die Änderungen anschaue:

$ git diff cryptest.vcproj
diff --git a/cryptest.vcproj b/cryptest.vcproj
index cec447d..9ae71ea 100644
--- a/cryptest.vcproj
+++ b/cryptest.vcproj
@@ -76,7 +76,7 @@
...
Name="VCLinkerTool"
-        AdditionalDependencies="odbc32.lib odbccp32.lib Ws2_32.lib"
+        AdditionalDependencies="Ws2_32.lib"^M
        SuppressStartupBanner="true"
...

Wie führe ich einen Ersetzungsvorgang durch, ohne überflüssige Leerzeichen hinzuzufügen?

Antwort1

Heutzutage erkennt Emacs automatisch die in einer Datei verwendeten Zeilenenden. Sie sehen also nicht, ob eine Datei Zeilenenden hat \noder \rnicht \r\n. Alle Änderungen in Emacs behalten die Zeilenenden bei und imitieren sie.

Um wirklich zu sehen, was die Datei enthält, können Sie es cat -vetmit dem Befehl versuchen, der Steuerzeichen einschließlich ^M, Tabulatoren ( ^I) und das Zeilenende ( $) anzeigt.

Beachten Sie, dass beim Verschieben von Textdateien zwischen dem Arbeitsverzeichnis und der Objektdatenbank eine automatische Konvertierung in oder umgekehrt gitkonfiguriert werden kann . Siehe hierzu\r\n\nArtikelund dasArtikelum zu überprüfen, wie Ihr Git global und pro Repository konfiguriert ist und wie Sie es ändern können.

Es ist schwer zu erkennen, wie seddas eingeführt werden könnte \r. Ich gehe davon aus, dass Sie ein Unix-System verwenden.


Überprüfen Sie oben in Ihrem Arbeitsverzeichnis, dass die folgenden Befehle nichts anzeigen:

git config core.eol
git config core.autocrlf
find . -name .gitattributes -o -name attributes

Führen Sie die unbearbeitete Originaldatei durch cat -vetund prüfen Sie, ob alle, einige oder keine Zeilen mit den 3 Zeichen enden ^M$.

verwandte Informationen