41

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

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

  1. 永远不要改变windows环境。使用此选项,您必须使用“bash”外壳来处理 git。

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

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

我想到了另一个与系统 PATH 无关的问题。

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

4

5 回答 5

44

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

对于后一种选项,msysgit将常见 Linux 实用程序的 Windows 构建添加到PATH. 这包括find,killsort, 以及cp, ls,rm和大约 20-30 个其他人。

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

如果您知道您将使用哪一个,这并不是一个巨大的考验,但是任何开发的应用程序都期待一个并获得另一个肯定会失败。


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

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

相应调整C:\Git\bin。但是,只需运行它并在cmd.

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

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

于 2009-03-15T11:02:30.333 回答
9

您可能想知道:

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

  • 在 MSysGit1.6.2 之前,没有git-svn (现在是)。
    问题是 git-svn 需要 subversion 的 perl 绑定,并且您只能将它们构建为可动态加载的模块。而且 MSysGit 有一个不支持动态加载模块的 perl 版本。

  • 有关 MSysGit 的所有详细信息最好在他们的MSysGitHerald Github wiki中进行解释

于 2009-03-15T10:21:21.430 回答
3

在 Windows 上(这在其他系统上不是问题,在我非常拙劣的观点中......),您必须非常了解 crlf 问题,并注意(除非他们在最新版本的 Git 中更改了这一点,我相信他们可能有 - 或者如果您使用的是非常旧版本的 Git),autocrlf 默认启用,与所有其他 git 安装不同。

另请注意,除非您使用最新版本的 msysgit,如果我从邮件列表中没记错的话,本周很快就会发布,您的存储库大小不能大于 2GB。

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

最后,git 在 windows 上比在 linux 上要慢得多,尽管它(在我有限的经验中)比其他选择要快。

现在,关于路径...

除非我弄错了,否则您应该能够确保主 git 二进制文件在路径中 - 然后该二进制文件应该负责引用其他 git 组件......但我没有对此进行测试。

于 2009-03-09T08:34:05.547 回答
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 :-)

于 2009-03-09T22:34:00.940 回答
0

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

然后您会看到未暂存更改中的文件,并通过单击文件名旁边的小页面图标,将它们移动到暂存更改中。

并且绝对用剪刀运行并选择选项 3。没有人再从命令行窗口使用 kill、sort 或 find 了。

于 2009-10-22T18:23:23.393 回答