我可以使用mSysGit和Cygwin的git吗?

8

在迁移到Windows后,我正在使用msysgit及其包含的bash shell,并且这对我来说效果很好。但是我有问题:我们的ant构建过程无法在该shell中运行,我想使用Cygwin的xterms而不是Windows命令窗口,因为终端兼容性不足以在该窗口中运行我想要的所有其他内容等等。

实际上,我已经尝试坚持在Windows命令shell中使用msysgit,以便我不必使用单独的窗口来构建,但是这还有更多问题:缺少cd和文件完成功能让我感到困扰,我想要管道到大多数命令都不存在等等。

所以,如果我切换到使用Cygwin的git,或者更糟糕的是,在不同的时间使用两个git,那么行尾会咬我吗?Cygwin的git是否期望一切都是\n并认为它看到了变化,因为mSysGit在检出时转换为\r\n?Cygwin的git是否会作为\n进行检出并困扰我的Windows Eclipse,我确定它希望一切都是\r\n


3
ж„ҹе…ҙи¶Јзҡ„дәәжҸҗй—®пјҡдҪ е°қиҜ•иҝҮеңЁCygwinдёӯдҪҝз”ЁMSYS Gitеҗ—пјҹеҰӮжһңжҳҜпјҢе®ғиғҪе·ҘдҪңеҗ—пјҹи°ўи°ўгҖӮ - joce
2
msysgit不是来自Cygwin。我发现只要小心处理像core.autocrlf这样的设置,我可以交替使用Cygwin的git和msysgit。 - skiphoppy
7个回答

10

最简单的方法是设置任何git(msysGit或Cygwin git)忽略crlf样式。

core.autocrlf=false
那样做,您就不会有任何不必要的冲突。

那指引了我正确的方向,不过我认为我需要从Cygwin将其设置为true。我必须保持CRLF样式的终止符以与其他Windows应用程序兼容,我想。 - skiphoppy
还有哪些Windows应用程序?正如彼得·博顿在他的回答中所说,“大多数现代应用程序(包括Eclipse)都可以完全使用\n。” - VonC
我在使用不同版本的msysGit时遇到了行尾问题。显式设置autocrlf解决了这个问题。 - T.E.D.
@ted:有趣。我总是尝试将所有的msysGit保持在同一个版本,并且没有遇到过这种情况。 - VonC
记事本仍然无法处理 \n 行结尾,但我想使用的其他所有东西都可以。 - George V. Reilly

3

如果我在Cygwin中使用git check out时,会不会出现\n的情况,从而导致我的Windows Eclipse混乱,因为我确定它希望所有内容都是\r\n?

大多数现代应用程序(包括Eclipse)都可以完全使用\n。

有一些烦人的例外情况(例如电子邮件协议),但在大多数情况下,您可以坚持只使用\n来处理所有内容。

所以,正如VonC所说,只需禁用autocrlf设置即可。


除非skiphoppy有一个非常特殊的上下文需要使用\r\n,否则我同意你的观点。+1 - VonC

2

1
实际上,仅仅坚持使用msysGit并不能解决问题。我曾经遇到一个问题,因为使用不同版本的msysGit导致每个源文件都显示为已更改,这是由于行尾问题引起的。在git配置文件中设置core.autocrlf可以解决这个问题。

0

我对行尾感到头疼。我正在使用cygwin git,它总是将一些新检出的文本文件报告为“已修改”。当我将“core.autocrlf”从“true”更改为“input”时,15个文件中有10个从修改列表中消失了,而在我将“core.autocrlf”设置为“false”后,剩下的5个也消失了。

由于声望不高,我无法投票支持VonC的解决方案,但我可以说它对我有效。


0

我在msysgit中将core.autocrlf设置为false,并使用cygwin默认安装的内容。

我在使用cygwin工具和msysgit附带的mingw工具从命令提示符中检出时遇到了问题,因为文件模式似乎发生了变化(755似乎在每个文件中都变成了644)。这似乎是与可执行位有关的问题。 git reset没有帮助。

然而,从msysgit GUI窗口进行初始克隆并没有出现此问题,现在我似乎可以自由地使用cygwin,无论是从其自己的bash shell还是从命令提示符,或者从msysgit的bash shell。换句话说,一切都很顺利。

因此,如果您看到每个文件似乎都发生了变化,并且行尾似乎不是问题的原因,请尝试从GUI中检出。


0

调试了一段时间后,我解决了我的问题。我以绕路的方式从Linux分区中复制了id_rsa文件,并将行尾保留为LF(Unix)格式。在eclipse中打开文件并将行尾转换为Windows格式即可解决此问题。另外,我按照这些说明将GIT_SSH设置为Plink(来自Putty):http://www.mainelydesign.com/blog/view/git-plink-for-ssh-on-windows


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接