问题
通过 Parallels 在 Mac 上运行 Windows,我们似乎无法找出正确的 Git 设置,因此我们不会得到行结束文件更改。
详情
Git 存储库位于 Windows 虚拟机上,是我们可以在 Mac 上访问的共享驱动器,因此我们可以编辑我们的 Angular 代码。
看了很多StackOverflow上的文章,好像都没有解决问题。
是否可以在 Windows 中处理 cSharp 文件,并从命令行进行提交。
然后滑到 Mac,编辑一些 javascript,然后在 mac 终端中进行提交,而不会不断地对其他不相关的文件进行行结束更改?
我们一直在研究 core.autocrlf 和 core.eol 以及 .gitattributes 但似乎不管我们做什么,一个操作系统或另一个操作系统都会显示大量的文件更改(最终是行尾)但是我们的编辑没有进行更改。
我可以在 Windows 上做一个克隆,然后在 Mac 上做一个 git status,它会让它看起来像每个文件都改变了。
问题
需要设置什么?
第 1 步:在 Windows 上
git config --global --unset core.eol
git config --global core.autocrlf true
//在一个新的分支上
git rm --cached -r .
git reset --hard
git commit "Reset Line Endings" //(I expected this to be larger).
[line 4d14aa1] Reset EOL
9 files changed, 12910 insertions(+), 12910 deletions(-)
git status
$ git status
On branch line
nothing to commit, working directory clean
第 2 步:在 Mac 上
git config --unset core.eol
git config --global core.autocrlf input
git status
modified: tools/NUnit2.5.3/nunit-agent-x86.exe.config
modified: tools/NUnit2.5.3/nunit-agent.exe.config
modified: tools/NUnit2.5.3/nunit-console-x86.exe.config
modified: tools/NUnit2.5.3/nunit-console.exe.config
modified: tools/NUnit2.5.3/nunit-x86.exe.config
modified: tools/NUnit2.5.3/nunit.exe.config
modified: tools/NUnit2.5.3/pnunit-agent.exe.config
modified: tools/NUnit2.5.3/pnunit-launcher.exe.config
modified: tools/NUnit2.5.3/runFile.exe.config
modified: tools/NUnit2.5.3/runpnunit.bat
modified: tools/NUnit2.5.3/test.conf
modified: tools/StyleCop 4.3.1.3/ReSharper-code-style-settings.xml
modified: tools/StyleCop 4.3.1.3/Settings.StyleCop
...(100's of other files)
第 3 步:在 Windows 上
git status
Same output as above
.git 属性
* text=auto
# These files are text and should be normalized (convert crlf => lf)
# Git Files
.gitattributes text
.gitignore text
.gitconfig text
# cSharp / Visual Studio
*.bat text eol=crlf
*.cmd text
*.cs text diff=csharp eol=crlf
*.csproj text
*.h eol=crlf
*.md text
*.msbuild text
*.ps1 text
*.sdf binary
*.sln text eol=crlf
*.tt text
*.xaml text
# Web
*.css text
*.sass text
*.json text
*.js text
*.htm text
*.chm binary
*.html text
*.xml text
*.svg text eol=lf
# Images & Media
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.mov binary
*.ico binary
*.pdf binary
# Compression
*.gz binary
*.zip binary
*.7z binary
*.nupkg binary
# Fonts
*.ttf binary
*.eot binary
*.woff binary
# Documents
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
*.md text
*.adoc text
*.textile text
*.csv text
*.tab text
*.tsv text
*.sql text
*.psd binary
*.ai binary
*.eps binary
# Compiled Dynamic libraries
*.so binary
*.dylib binary
*.dll binary
*.pdb binary
# Compiled Static libraries
*.lai binary
*.la binary
*.a binary
*.lib binary
*.llblgenproj binary
# Executables
*.exe binary
*.out binary
*.app binary
# Security
*.p12 binary
*.cer binary
最佳答案
我对您的建议是让您的整个开发团队就通用代码格式达成一致,包括行尾。这样,当开发人员尝试在 Windows 上提交最后一次在 Mac(即 Linux)上编辑的文件时,永远不会有任何摩擦。 Git 很仁慈地告诉你行尾可能会改变。然而,我相信处理这个问题的更好方法是不依赖 Git,而是就所有机器的通用格式达成一致。
在我从事的许多软件工作中,我都遇到过代码格式问题。这不仅限于行尾,还可能与间距和制表符有关。让每个人都同意一种格式可以节省时间并避免不必要的 merge 冲突。
以下是有关如何在主要 IDE 中配置行结束分隔符的链接:
关于git - 在没有行结束文件更改的情况下在 mac 和 windows vm 之间共享 git repo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33295867/