Windows上的msysgit - 我应该注意什么,如果有的话?

时间:2009-03-08 12:46:07

标签: windows git version-control msysgit

这与最近的另一个question I asked有关。

安装msysgit时,安装程​​序会显示3个与系统路径相关的选项:

  1. 永远不要更改Windows环境。使用此选项,您必须使用“bash”shell来使用git。

  2. 将git \ bin目录添加到PATH环境变量中,但不覆盖一些内置的Windows工具。 stackoverflow-ian Gabe Moothart told me in a comment这个选项会让一些git操作失败!这些操作是什么?我应该担心他们吗?

  3. 与2相同,但会覆盖一些默认的系统工具。这些工具是什么?窗户的哪些部分依赖于它们?在实践中这会受到伤害吗?

  4. 另一个问题出现在我的脑海中,与系统路径无关。

    如果我的项目目录中有符号链接和硬链接怎么办? git知道如何处理这些吗?或者,它是否会受到无限递归的影响,如果说,目录结构是这样的,某些文件夹实际上是其父母之一的符号链接?

5 个答案:

答案 0 :(得分:44)

无论您选择哪个选项,都会获得bash,后一个选项只会添加在其外部使用Git的方法。

对于后一种选项, msysgit 会将Windows常用Linux实用程序版本添加到 PATH 。这包括 find kill sort ,以及 {{1 } cp ls ,以及约20-30人。

前3个(和类似的)的问题在于它们存在于两个操作系统中,并且每个操作系统的功能都不同。

如果您知道自己将使用哪一个,那么这不是一个巨大的考验,但是任何开发出来的应用程序都会期待一个并且获得另一个应用程序肯定会有用。


为了防止冲突,在让Git按预期工作的同时,您可以创建一个简单的批处理脚本,仅为会话调整rm。 (例如,PATH

readygit.bat

相应地调整@echo off setlocal set PATH=C:\Git\bin;%PATH% cmd 。但是,只需运行此命令并在C:\Git\bin内使用Git。

有了这个,您可以使用安装选项3并从系统的cmd安全地删除C:\Git\bin,从而消除对Windows应用程序的任何混淆,而不会混淆Git。

我目前使用与GnuWin个应用相似的脚本,包括 PATH

答案 1 :(得分:9)

您可能想知道:

  • 所有git命令都不存在。在2009年3月初的MSysGit1.6.2上:archimport,cvsexportcommit,cvsimport,cvsserver,filter-branch,instaweb,send-email和shell。)

  • 在MSysGit1.6.2之前,git-svn为not thereit is now)。
    问题是git-svn需要subversion的perl绑定,你只能将它们构建为动态可加载模块。 MSysGit有一个不支持动态可加载模块的perl版本。

  • 有关MSysGit的所有详细信息,请参见MSysGitHerald Github wiki

答案 2 :(得分:3)

在Windows上(在我非常谦虚的意见中,这不是其他系统上的问题......),你必须非常清楚crlf问题,并注意(除非他们在最新版本中对此进行了更改) Git,我相信它们可能有 - 或者如果您使用的是非常旧版本的Git),默认情况下会启用autocrlf,与所有其他git安装不同。

另请注意,除非您使用最新版本的msysgit,否则如果我从邮件列表中正确回忆,本周即将发布,您的存储库大小不能超过2GB。

此外,Windows非常不区分大小写,但有时/保留大小写 - 请记住这一点! (这不会混淆git - 但它可以并且确实混淆了git repo的用户。)

最后,git在Windows上比在linux上慢得多,尽管它(在我有限的经验中)比替代品更快。

现在,关于路径......

除非我弄错了,否则你应该能够确保主要的git二进制文件在路径中 - 然后该二进制文件应该负责引用其他git组件......但我还没有测试过它。 / p>

答案 3 :(得分:2)

如果您打算从cygwin提示符运行git,MSYS Git安装程序会建议选项2。 cygwin环境确保git依赖项在您的PATH中。如果选择此选项但从Windows命令提示符调用git,将找不到git所依赖的所有unix-y命令行实用程序。 IIRC,git本身部分实现为bash脚本。我不知道哪些操作会失败,但我认为git不会以这种方式使用。

我没有选项3覆盖的系统工具列表(安装程序提到find.exe)但这只会影响您,如果您是批处理脚本忍者。在命令行,find现在将引用该名称的unix实用程序,而不是Windows附带的exe。它不会以任何方式伤害Windows本身。

只需用剪刀跑,然后选择选项3: - )

答案 4 :(得分:0)

在Windows上使用Windows GUI并创建第一个存储库时,请不要为存储库目录键入名称“.git”。 (然后它将创建,然后在它下面创建另一个.git文件夹,当你最终想到那里时)浏览到包含其源代码的文件夹,然后 - 只需选择该文件夹!将为您创建存储库目录“.get”。

然后,您会看到未分阶段更改中的文件,并通过单击文件名旁边的小页面图标,将其移动到分阶段更改中。

肯定用剪刀运行并选择选项3.没有人使用命令窗口行中的kill,sort或find。