我在一个只有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
的变化,无论如何都不会提交,或者理解为什么这是不可能的。
当您设置core.autocrlf true
时,您的工作目录中的所有文件都将具有CRLF
行结束符(尽管存储库中的实际行结束符较少)。对于大多数windows用户来说,这已经足够好了。
从你的问题,我明白你想有你的工作目录文件(=本地文件)与LF
。所以,这里你应该使用core.autocrlf input
。这将为您提供与存储库中相同的确切行结尾(但仍然会确保所有签入都使用LF
)。
阅读更多关于真假的区别,在这个答案中输入