在mac和windows vm之间共享git repo而不更改行结束文件

时间:2015-10-23 06:11:01

标签: git macos window line-endings

问题

通过Parallels在Mac上运行Windows,我们似乎无法找出正确的Git设置,以便我们不会对行结束文件进行更改。

详细

Git repo位于Windows vm上,是我们可以在Mac上访问的共享驱动器,因此我们可以编辑Angular代码。

我已经阅读了很多关于StackOverflow的文章,但他们似乎无法解决问题。

是否可以在Windows中处理cSharp文件,并从命令行进行提交。

然后滑到Mac,编辑一些javascript,然后在mac终端进行提交,而不必对其他不相关的文件进行行结束更改?

我们一直在玩core.autocrlf和core.eol以及.gitattributes,但似乎无关紧要,一个操作系统或另一个操作系统会显示大量的文件更改(最终会成为行结尾)但是我们的编辑没有做出改变。

我可以在Windows上进行克隆,然后在mac上执行git状态,它会使每个文件看起来都变了。

问题

需要进行哪些设置?

第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

.gitattributes

* 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

1 个答案:

答案 0 :(得分:1)

我对您的建议是让您的整个开发团队就共同的代码格式达成一致,包括行结尾。这样,当一个开发人员试图在Windows上提交最后在Mac上编辑的文件(即Linux)时,永远不会有任何摩擦。 Git告诉你线路结束可能会改变,这是很亲切的。但是,我认为处理这个问题的更好方法是依赖Git,而只是就所有机器上的通用格式达成一致。

在我的许多软件工作中,我看到了代码格式化的问题。这不仅限于行结尾,还可能与间距和制表符有关。让每个人都同意格式可以节省时间并避免不必要的合并冲突。

以下是有关如何在主要IDE中配置行结束分隔符的链接:

IntelliJ
Eclipse
Netbeans

相关问题