2015-09-03 26 views
7

Ich arbeite in einer Nur-Windows-Arbeitsumgebung mit Entwicklern, die alle Arten von Werkzeugen verwenden, um ihre Dateien zu bearbeiten. Wir verwenden .git zusammen mit dem Atlassian-Stack, um unseren Code zu versionieren. Ich mag fast alles.Wie ändere ich das Verhalten des Git-Status, der veränderte Dateien anzeigt, die eventuell nicht festgeschrieben wurden?

Ich habe erst vor kurzem einen langen und harten Kampf zu kämpfen, um meinen Kopf darum zu wickeln, wie und warum Git interpretiert Zeilenenden und was core.autocrlf tut. Wir haben beschlossen, core.autocrlf true zu verwenden und alles ist fast gut.

Ich würde gerne wissen, wie dieses Verhalten von git status ändern:

  • ich eine Datei mit CRLF Zeilenenden haben.
  • ich ändern Sie die Zeilenenden LF

    $ git status 
    On branch somebranch 
    Changes not staged for commit: 
        (use "git add <file>..." to update what will be committed) 
        (use "git checkout -- <file>..." to discard changes in working directory) 
    
    modified: Src/the_file_i_changed_to_LF.js 
    
  • Aber dann ...

    $ git commit -a 
    warning: LF will be replaced by CRLF in Src/the_file_i_changed_to_LF.js. 
    The file will have its original line endings in your working directory. 
    On branch somebranch 
    nothing to commit, working directory clean 
    

Um diese:

  • Ich habe eine Datei mit CRLF Zeilenenden.
  • ich ändern Sie die Zeilenenden LF

    $ git status 
    On branch somebranch 
    nothing to commit, working directory clean 
    
  • was Sinn macht, da wird nichts ohnehin verpflichtet erhalten.

Ist das möglich?

Ich glaube, das mögliche Duplikat hält nicht die Antwort, die ich suche. Ich möchte betonen, dass ich (denke ich) weiß, was meine Einstellung core.autocrlf true tut und möchte, dass es so bleibt. Was mich interessiert, ist, entweder Änderungen in git status, die sowieso nicht begangen werden, nicht zu erkennen oder zu verstehen, warum das nicht möglich ist.

Antwort

1

Wenn Sie core.autocrlf true alle Dateien im Arbeitsverzeichnis gesetzt werden CRLF Zeilenende (betrachten weniger von der aktuellen Zeile im Repository Ende) hat. Für die meisten Windows-Benutzer ist das gut genug.

Von Ihrer Frage Ich verstehe, dass Sie Ihre Arbeitsverzeichnisdateien (= lokale Datei) mit LF haben möchten. Also, hier sollten Sie core.autocrlf input verwenden. Dies gibt Ihnen die genaue Zeilenendung wie im Repository (aber es wird trotzdem sicherstellen, dass alle Check-Ins mit LF gemacht werden).

Lesen Sie mehr über den Unterschied von True, False, Eingabe in diesem answer.