使用Cygwin或msysGit版本的Git,还是两者都使用?

23

我正在使用Windows 7,今天第一次安装了Cygwin并进行了一些尝试。现在我想开始使用Git。

据我所知,msysGit可以让你使用GUI,并且它还添加了文件/文件夹的右键菜单选项添加到Git GUI添加到GIT Bash

与此同时,我也想使用命令行来进行Git操作,但是作为一个Git初学者,拥有上下文菜单和GUI会很方便。

所以我有点困惑。以下是我的几个问题...

  1. 如果我使用msysGit安装Git,我是否仍然可以使用Cygwin运行Git的命令行?

  2. 有一本书说你可以同时安装Cygwin和msysGit版本,如果这是真的,它们是否能够处理同一文件/存储库,或者像在每个文件上都有两个独立的Git存储库那样?如果是后者,那似乎就有些重复了。

  3. 我还看到msysGit有一个便携式版本。如果我使用这个便携版,那么Git存储库是存储在USB设备上还是只有程序?如果存储库和程序都能够便携,那就太酷了。


msysgit版本的git在支持长路径名方面存在问题,而cygwin版本则没有。 - user11153
6个回答

17

1)如果您没有使用cygwin进行其他操作,但想要使用Git,请选择msysgit。它为Windows提供了良好的Git集成,并且几乎所有GUI工具(如Git扩展、TortoiseGit等)都依赖于msysgit。此外,通过msysgit,您可以在命令行和powershell中使用git,如果只有cygwin git,则无法做到这一点。

msysgit带有自己的bash,您可以使用它作为命令行,而无需cygwin(同样,仅针对不使用cygwin进行其他操作的情况)。几乎所有的git功能都可在msysgit中使用,除了一些Windows特定的更改(和性能),您会发现一切都可以与*nix上的git相媲美。与msysgit相比,cygwin的性能不如msysgit,也远不及*nix上的原生git。

2)它们都可以并存,您不需要单独的代码库。

3)Git代码库很轻巧,只涉及文件系统。不存在可移植的git代码库的概念,因为它们实际上是可移植的。 Msysgit Portable旨在允许您在未安装msysgit的系统上操作Git代码库。


@manojlds 所说的“没有可移植性概念”是指所有 git 存储库都是可移植的,因为它们是分布式版本控制系统,并且作为一个简单的文件系统意味着您可以将其放在任何地方 - 实际上,如果您愿意,您可以通过 USB 运行整个开发环境,其中包括 IDE、msysgit 和存储库。 - MattJenko
11
关于“它们可以和平共存”的说法,有一个需要注意的地方:我安装了Cygwin,但没有安装Cygwin版本的git,因为我已经安装了msysgit。结果发现,msysgit版本的git将使用msysgit版本的ssh,这与Cygwin不兼容。如果您将要使用Cygwin,请使用Cygwin版本的git。我不想承认我浪费了多少时间去解决这个问题。 - Edward Falk
尽管它们可以和平共存,但 MSYS 和 Cygwin 对于要分配给文件的 UNIX 模式(权限)有不同的概念。当在 msysGit 创建的存储库中使用 Cygwin git 时,这可能会非常令人烦恼。(但这并不是世界末日) - tjollans

16
你可以使用其中一个,也可以同时使用两个——但需要注意一些事项。
在我最近的工作中,大部分团队都使用msysGit;我使用Cygwin Git,因为我本来就是Cygwin的重度使用者。
这两个环境对执行权限的处理方式有所不同。在MSYS环境下检出foo.cmdfoo.bat文件时,它将其视为可执行文件,因为.cmd.bat后缀表示可执行格式。而Cygwin则不会,它是类Unix环境,因此不会根据后缀假定文件是可执行的。所以*.cmd文件对其他人都能正常工作,但对我不行。
解决方法是进行chmod +x,然后检入并推送更改,这使得文件对我可执行,但不影响其他用户。
我还遇到了一些输入密码的问题,当进行pushpullfetch操作时;git中关闭回显的代码在MSYS下起作用,但在Cygwin下不起作用。我通过使用无需密码的ssh来避免这个问题。
除此之外(也许还有一两个问题我现在没想起来),一切都相当顺利。

1
谢谢你的建议,今天早上我安装了Cygwin,因为我想要一个更好的命令行控制台,我没有意识到我可以得到一个包装器,所以现在我有了一个叫做Console的选项卡,其中包括Windows命令提示符、Windows PowerCMD和Cygwin。我刚刚安装了msysGit版本,并成功将其控制台添加为选项卡,所以看起来我可能真的不需要Cygwin了,除非我能找到其他有用的理由来保留它。 - JasonDavis

5

对于cygwin和msysGit,它们都需要单独安装。前者只能在cygwin中使用;后者会安装自己的bash shell(和GUI工具),但也可以从cmd.exe或PowerShell中使用。我个人更喜欢使用msysGit。

两者都可以用来访问相同的Git存储库。


3
如果你不走运地遇到了一个Git仓库,其中某些提交的大小达到了数GB级别,那么你将会在使用MSysGit时耗尽内存,因为目前只有32位版本可用(尽管有一个64位版本正在进行先行测试,但目前仍存在一些问题,因此不适合用于生产环境)。只有在这种情况下,64位Git才成为必需品。
更新:你可以通过以下方式,而不是使用Cygwin,来使用64位Git:
1. 安装Vagrant 2. 安装VirtualBox 3. 添加此VagrantFile到一个空文件夹中 4. 根据需要对其进行调整 5. 在命令提示符下进入新文件夹并执行以下步骤: 1. 输入命令“vagrant up”。在此期间可以喝杯咖啡。 2. 接下来,输入命令“vagrant ssh”。

您现在拥有一个安装了64位git的Linux虚拟机。接下来,在虚拟机内执行以下操作:

  1. cd /vagrant
  2. git clone

等待克隆完成,您将拥有一个64位的Git安装程序,用于控制Windows上的存储库。


2

千万不要安装cygwin的git。它会让你的电脑慢到无法使用。我打算尝试msysgit,希望能有更好的表现。


1
我还注意到Cygwin版本的Git似乎没有msysgit版本的性能好。在我的经验中,差异似乎很小,大约几秒钟左右,但当我快速连续输入一堆Git命令时,任何性能上的差异都会逐渐累积。 - user456814

2
你可能会把工具git和git仓库混淆了。msysgit和cygwin git提供了工具,而仓库可以独立存在,不需要安装git二进制文件。
1- 是的,msysgit是使用MSYS实现的git版本,比Cygwin git性能更高。msysgit也有命令行git.exe可执行文件。msysgit不依赖其他东西,可以从常规的cmd中运行。
Cygwin的git将依赖于Cygwin系统,相对于msysgit来说速度较慢。
你可以同时安装两者,但如果你不用cygwin做其他事情,那么就没有必要为了git而安装它。我强烈支持使用msysgit。
2- git就是git,你可以使用msysgit或cygwin的git来处理相同的仓库,但要注意版本不匹配(例如,如果你使用的是msysgit 1.7.8和cygwin git 1.6)。我认为这不是一个大问题,但我从未安装过多个git版本。
编辑:
3- msysgit portable意味着你可以将msysgit放在类似闪存驱动器之类的设备上携带。
额外:
你可能想试试TortoiseGit。它是一个git的GUI,可以在Windows资源管理器中为你提供上下文菜单。在安装TortoiseGit之前,你需要先安装msysgit。

如果你喜欢使用Tortoise Git,那么它的一个优点就是可以在Windows资源管理器中与之交互,包括漂亮的图标显示文件的状态。 - MattJenko

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