Windows上的msysgit – 我应该知道什么,如果有的话?

这与我最近问的另一个问题有关。

安装msysgit时,安装程​​序会提供3个与系统path相关的选项:

  1. 切勿改变Windows环境。 有了这个选项,你必须使用“bash”shell来使用git。

  2. 将git \ bin目录添加到PATH环境variables,但不覆盖一些内置的windows工具。 同伴stackoverflow-ian Gabe Moothart 在评论中告诉我 ,这个选项会让一些git操作失败! 这些操作是什么? 我应该担心吗?

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

另一个问题出现在我脑海里,与系统PATH无关。

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

不pipe你select哪个选项,你都会得到bash ,后面的选项只是添加了在其外部使用Git的方法。

对于后面的选项, msysgit将常见Linux实用程序的Windows版本添加到PATH 。 这包括findkillsort ,以及cplsrm和其他约20-30个。

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

如果你知道你将使用哪一个,那么这并不是一个巨大的考验,但是任何开发出来的应用程序都希望得到另一个应用程序。


为了避免这种冲突,Git仍然按照预期工作,您可以创build一个简单的批处理脚本,仅为会话调整PATH 。 (例如, readygit.bat

 @echo off setlocal set PATH=C:\Git\bin;%PATH% cmd 

相应地调整C:\Git\bin 。 但是,运行这个并在cmd使用Git。

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

我目前使用GnuWin应用程序类似的脚本,包括find

你可能想知道:

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

  • 直到MSysGit1.6.2,git-svn 不在那里 ( 现在 )。
    问题是git-svn需要subversion的perl绑定,你只能将它们构build为可dynamic加载的模块。 MSysGit有一个不支持dynamic加载模块的Perl版本。

  • 关于MSysGit的所有细节最好在他们的MSysGitHerald Github wiki中解释

在Windows上(这在其他系统上不是什么问题,在我看来是非常愚蠢的…),你一定非常了解crlf的问题,并且注意到(除非他们已经在最新版本的Git中改变了这个,我相信他们可能有 – 或者如果你使用的是一个非常旧的版本的Git),autocrlf是默认启用,不像所有其他的git安装。

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

另外,Windows对于大小写不敏感,但是/有时/保留情况 – 牢记这一点! (这不会混淆git – 但它可以并且混淆了git仓库的用户)。

最后,git在windows上比在linux上慢很多,尽pipe(在我有限的经验中)比替代scheme更快。

现在,关于path…

除非我错了,你应该能够确保主要的git二进制文件在path中 – 然后二进制文件应该照顾到其他git组件的引用……但是我没有testing过这个。

MSYS Git安装程序build议选项2,如果您打算从cygwin提示符运行git。 cygwin环境确保git依赖关系在你的PATH中。 如果你select这个选项,然后从Windows命令提示符调用git,那么git依赖的所有unix-y命令行工具将不会被find。 IIRC,git本身部分实现为bash脚本。 我不知道哪个操作会失败,但是我不认为git可以这样使用。

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

用剪刀运行,然后select选项3 🙂

当您在Windows上使用Windows GUI时,创build第一个存储库时,请勿为存储库目录input名称“.git”。 (然后创build它,然后在它下面创build另一个.git文件夹,当你终于想到那里)浏览到其中的源文件夹,并且 – select那个文件夹! 版本库目录“.get”将为您创build。

然后,您可以看到未分级更改中的文件,然后通过单击文件名旁边的小页面图标,将其移至分级更改中。

绝对使用剪刀运行,并select选项3.没有人使用杀死,sorting或find了命令窗口行。