准备Windows Git Repo进行跨平台开发

时间:2012-10-25 09:51:37

标签: git cross-platform newline eol core.autocrlf

我有一个Git仓库,到目前为止主要用于Windows开发。 Git EOL问题的大多数方面(LF与CRLF)并不重要,开发过程没有任何障碍 迁移到CMake构建环境后,我想在UNIX / Linux / MacOS上构建代码。代码本身是可移植的,但从过去的经验和一些初步实验来看,过渡有点痛苦,Git将未经修改的文件上的整个目录标记为已修改,检测到文件中看似未经修改的行并搞砸了[敏感文件/文件夹名称]。

此外,它seems that as of Git 1.7.2,Git有一个新的EOL系统,基于本地,每个项目,签到,.gitattributes而不是每个用户,全局,{{1}每个平台上的每个用途都应该设置。

任何人都可以建议一个repo准备路径/进程(在Windows上),这将允许我在没有所有这些麻烦的情况下在Linux上提取和提交文件吗?

可以看到部分建议,例如here,但这太过暴力,并未考虑.gitattributes专门打算原样保留的文件(例如.gitattributes

2 个答案:

答案 0 :(得分:0)

我使用Notepad2,你可以将默认的Line Endings更改为Linux(LF)。

  

如果我理解正确,则无需将源文件更改为   在Windows机器上有LF。虽然Git用LF检查它们,但它们可以   在Windows上查看了CRLF。

对我来说这是不是没有。使用git时我想查看完全回购中的内容。当任何体面的Windows文本编辑器允许您选择默认的行结尾时,我看到no reason有git转换行结尾。我不会也不会允许git弄乱Line Endings。

答案 1 :(得分:0)

一般情况下,在将数据存储到VCS中之前不要自动转换数据(git IIRC中的autocrlf = false),否则你会得到关于数据发生变化的误报。保留数据对VCS之外的工具(编辑器等)意味着什么的“解释”。

为防止虚假换行,请考虑:

  • 设置某种预提交挂钩,拒绝任何包含仅包含重写换行符的更改的提交。
  • 仅保护可能对换行符更改敏感的少数文件(.sln,.vc *文件等)。
  • 找出您的团队正在使用哪些编辑器,并确保每个人都对其进行配置,以便他们不会虚假地重写换行符。 (大多数编辑器默认都是以这种方式设置的 - 所以你不会有问题,直到有人自己让编辑器重写它们。)