将所有行结尾强制为git的LF

时间:2016-06-20 15:50:06

标签: git newline core.autocrlf

我为Windows和Linux开发。我的Linux开发环境是在我的Windows主机上运行的虚拟盒。我有一些目录共享(实际起诉samba,而不是内置的虚拟盒共享文件夹,所以该目录实际上是在linux客户端并共享给主机)

我们正在从svn转向git。我想在我的Windows机器上运行Source Tree(linux无头)来进行版本控制。但我希望所有文件都有linux行结尾(LF)。

我尝试按照Force LF eol in git repo and working copy的说明操作,但他们并不适合我。

我已将配置设置如下:

[adamc@adamc-centos scripts]$ git config core.autocrlf
input
[adamc@adamc-centos scripts]$ git config  core.eol
lf

我的.gitattributes中有以下内容(甚至强制.sh为文本fioles并再次指定eol)

* text=auto
*.sh    text eol=lf

我已经运行了那里指定的checkout-index命令,我仍然有.sh文件,其中包含windows行结尾!

[adamc@adamc-centos scripts]$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working directory clean

[adamc@adamc-centos scripts]$ git checkout-index --force --all
[adamc@adamc-centos scripts]$ ./EWEB/get_unmerged.sh
-bash: ./EWEB/get_unmerged.sh: /bin/bash^M: bad interpreter: No such file or directory

我错过了什么?或者我接近错了?

1 个答案:

答案 0 :(得分:-1)

如果使用不同的操作系统,建议的设置为

  • 用于Windows $ git config --global core.autocrlf true

  • 用于linux / mac git config --global core.autocrlf input

我认为您不需要定义参数core.eol或使用文件.gitattributes。 Git默认正确检测文本文件。

如何进行修复存储库中所有行结尾的提交,您可以在github页面https://help.github.com/articles/dealing-with-line-endings找到

如果您使用git-svn迁移存储库,那么最好重写整个历史记录并修复所有提交中的行结尾。