用代码分发git配置
在尝试为开发人员标准化平台时,我的需求之一是提交用代码分发git配置,git,Git,在尝试为开发人员标准化平台时,我的需求之一是提交.git/config,这样每个人都有相同的CRLF配置,而不会忘记手动设置 我该如何设置 我有点担心所有这些对autocrlf的负面影响。如果此功能不起作用,为什么不删除它?这项功能的制作者可能被误解,或者他们对其进行了失败的实验,应该将其删除,以阻止更多的人浪费时间(阅读晦涩难懂的手册页、提问、回答这些问题等).如果您使用的是Unix系列操作系统,我建议您只创建一个符号链接 ln -s .git/config git-config git ad
.git/config
,这样每个人都有相同的CRLF配置,而不会忘记手动设置
我该如何设置
我有点担心所有这些对
autocrlf
的负面影响。如果此功能不起作用,为什么不删除它?这项功能的制作者可能被误解,或者他们对其进行了失败的实验,应该将其删除,以阻止更多的人浪费时间(阅读晦涩难懂的手册页、提问、回答这些问题等).如果您使用的是Unix系列操作系统,我建议您只创建一个符号链接
ln -s .git/config git-config
git add git-config
git commit -m "Now tracking git config file"
我总是发现
autocrlf
config属性有问题。
(如我在答覆中所说)
- 它不仅使
- 它可以变化
- 它也有问题
- 和
- 配置线的一端样式
- 使该配置通过不同的Git repo传播
git config--global core.autocrlf false
然后: 一,。使用新的(1.7.2+) 为设置了text属性的文件设置要在工作目录中使用的行尾类型。
备选方案有“
lf
”、“crlf
”和“native
”,它们使用平台的本机行结尾。默认值为本机值 二,。A. 请参阅手册页:
crlf
或core.autocrlf
是在.gittributes
文件中记录以前是本地配置属性的方法
您可以添加如下内容:
三,。a可以:
- 强制执行您可能要设置的任何格式标准
- 将这些标准应用于某些文件/目录
- 被记录为配置文件(
),可以推送到任何地方.gittributes
- 可能是更好的使用方法:
在*nix或OS X系统中:
ln .git/config git-config
git add git-config
git commit -m "Now tracking git config file"
git clone FROM_PROJ_URL
rm .git/config
ln git-config .git\config
在NTFS文件系统上的Windows中:
mklink /H git-config .git\config
git add git-config
git commit -m "Now tracking git config file"
git clone FROM_PROJ_URL
del .git\config
mklink /H .git\config git-config
但我们必须记住,在克隆project时,应用设置以执行相反的过程:
在*nix或OS X系统中:
ln .git/config git-config
git add git-config
git commit -m "Now tracking git config file"
git clone FROM_PROJ_URL
rm .git/config
ln git-config .git\config
在NTFS文件系统上的Windows中:
mklink /H git-config .git\config
git add git-config
git commit -m "Now tracking git config file"
git clone FROM_PROJ_URL
del .git\config
mklink /H .git\config git-config
~/.gitconfig
可以在本地覆盖~/.gitconfig
因此,作为构建、生成文件或配置脚本的一部分,您可以向用户的~/.gitconfig
中建议更改,或者通过git config
加载本地脚本.gitconfig
例如,使用一些设置创建新的.gitconfig
,并通过以下方式加载:
git config --local include.path "/path/to/.gitconfig"
或者要求用户在其~/.gitconfig
中包含以下行:
[include]
path = .gitconfig
如果您使用Vagrant作为代码分发的一部分,您可以通过以下方式从Vagrant文件
加载git配置:
system('GIT_TRACE=1 git config --local include.path "$(git rev-parse --show-toplevel)/git/gitconfig"');
然后在git/gitconfig
中提交您的git配置,这样每次用户运行其VM的配置时,都会自动为主机上的git加载此文件(例如,强制禁用core.filemode
,这样Windows就不会有任何文件权限问题)
要强制用户使用行尾,您应该使用
.gittributes
,这应该是开箱即用的。使用类Unix行结尾(LF
)的示例语法:
这是个聪明的主意,我们混合了Windows/Mac/linux。但也许git可以使用windows链接,我会尝试用谷歌搜索它。它不起作用,在unix上,git即使使用链接也看不到配置文件的更改。如果你在unix上,它应该以另一种方式围绕mv.git/config git config工作;cd.git;ln-s../git config;光盘git添加git配置;git commit-m“正在跟踪git配置文件”;谢谢你的回答。我想我收到了一些关于autocrlf的信息。我在某个地方读到git只在\n模式下提交,这很好。我的一些开发人员正在使用windows,因为世界上的每个人都可以阅读crlf,所以我认为crlf对每个人来说都是最好的。但我们必须容纳那些似乎只喜欢cr的git。你怎么看?我在回顾属性的概念,之前我排除了它,因为我的理解是它是基于每个文件而不是整个存储库应用的。也许我弄错了。@narynaud:就我个人而言,我喜欢“
\n
”,而且我喜欢不改变任何关于eol的事情。但是,如果您强制一种eol样式,.gittributes
非常有趣,因为您可以将其应用于所有存储库,或者仅应用于repo中的特定部分。如果我在项目根目录下定义*+crlf,我想我会为我的png图片下地狱?我怎么能说“如果你认为它是文本,那么就做crlf,否则就做二进制”。我想避免自己做出艰难的决定,系统擅长猜测,调试错误将非常困难。@nraynaud:*.png-crlf
放在*+crlf
之后(在同一个.gittattributes
文件中)应该注意这一点。这正是我想要避免的。因为我会忘记添加.gif文件,或者有一天一个同事会添加一个新的文件格式,但在提交时看不到他销毁了它(“它在我的计算机上工作了”,测试中看不到网站的可视销毁)。在我看来,这似乎是一个糟糕的解决方案。另请参阅:您可能有一个类似问题的答案要补充。谢谢,但我有点担心所有这些对autocrlf的负面影响,如果它不起作用,为什么不删除此功能?这项功能的制作者可能被误解,或者他们对其进行了失败的实验,应该将其删除,以阻止更多的人浪费时间(阅读晦涩难懂的手册页、提问、回答这些问题等)