我为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
我错过了什么?或者我接近错了?
答案 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迁移存储库,那么最好重写整个历史记录并修复所有提交中的行结尾。