如何更改git status的行为,显示最终未提交的已修改文件?

时间:2015-09-03 10:41:22

标签: windows git end-of-line core.autocrlf

我在一个仅限Windows的工作环境中工作,开发人员使用各种工具来编辑他们的文件。我们使用.git和atlassian堆栈来编写代码版本。我几乎都喜欢它。

我刚刚结束了一场漫长而艰苦的斗争,围绕git如何以及为什么解释行结尾以及core.autocrlf所做的事情。我们决定使用core.autocrlf true,一切都很好。

我很想知道如何更改git status的这种行为:

  • 我有一个CRLF行结尾的文件。
  • 我将行结尾更改为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
    
  • 但是......

    $ 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
    

对此:

  • 我有一个CRLF行结尾的文件。
  • 我将行结尾更改为LF

    $ git status
    On branch somebranch
    nothing to commit, working directory clean
    
  • 这是有道理的,因为无论如何都不会有任何承诺。

这可能吗?

我相信可能的重复不能解决我正在寻找的答案。我想强调的是,我(我想)知道我的设置core.autocrlf true做了什么,并希望保持这种方式。我感兴趣的是要么不检测git status中无法提交的更改,要么理解为什么这是不可能的。

1 个答案:

答案 0 :(得分:1)

当您设置core.autocrlf true时,工作目录中的所有文件都将以CRLF行结束(与存储库中结尾的实际行相比较少)。对于大多数Windows用户来说,这已经足够了。

根据您的问题,我了解您希望将工作目录文件(=本地文件)与LF一起使用。所以,在这里你应该使用core.autocrlf input。这将为您提供与存储库中结尾的确切行(但仍将确保所有签入都使用LF)。

在此answer中详细了解true,false和input的区别。