Ada*_*dam 6 git newline core.autocrlf
我为 Windows 和 linux 开发。我的 Linux 开发环境是在我的 Windows 主机上运行的虚拟机。我共享了一些目录(实际上是在起诉 samba,而不是内置的虚拟机共享文件夹,所以该目录实际上是在 linux 来宾上并共享给主机)
我们正在从 svn 迁移到 git。我想在我的 Windows 机器上运行 Source Tree(Linux 是无头的)来进行版本控制。但我希望所有文件都有 linux 行尾(LF)。
我尝试按照git repo 和工作副本中的Force LF eol 中的说明进行操作,但它们对我不起作用。
我已将配置设置如下:
[adamc@adamc-centos scripts]$ git config core.autocrlf
input
[adamc@adamc-centos scripts]$ git config core.eol
lf
Run Code Online (Sandbox Code Playgroud)
我的 .gitattributes 中有以下内容(甚至强制 .sh 成为文本文件并再次指定 eol)
* text=auto
*.sh text eol=lf
Run Code Online (Sandbox Code Playgroud)
我已经运行了那里指定的 checkout-index 命令,但我仍然有带有 Windows 行结尾的 .sh 文件!
[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
Run Code Online (Sandbox Code Playgroud)
我错过了什么?还是我接近它错了?
小智 -2
如果您使用不同的操作系统,建议的设置是
用于窗户
$ git config --global core.autocrlf true
对于 Linux/Mac
git config --global core.autocrlf input
我认为您不需要定义参数core.eol或使用 file .gitattributes。默认情况下,Git 可以正确检测文本文件。
如何提交修复存储库中的所有行结尾,您可以在 github 页面找到https://help.github.com/articles/dealing-with-line-endings
如果您使用 git-svn 迁移存储库,那么重写整个历史记录并修复所有提交中的行结尾可能是个好主意。