“使用Windows命令提示符中的Git和可选的Unix工具”选项是否危险?


11

安装Git时,它提供了将其所有msys * nix工具添加到PATH中的选项,但是它会警告:

警告:这将覆盖Windows工具,例如“查找”和“排序”。仅在了解其含义后使用此选项。

我的问题是:

  • 它将与哪些工具发生冲突?
  • 有关系吗?它们是系统常用的吗?(我从未亲自使用过它们。)
  • 我可以只更改PATH中目录的顺序以防止发生冲突吗?
  • 这是第二个选项的作用吗?(“使用Windows命令提示符中的Git-此选项被认为是安全的,因为它仅添加了一些最小的Git包装器”)

Answers:


4

我同意其他答案的一般分析,也无法准确预测您可能会遇到哪种冲突。我知道我并没有发现任何困扰自己的问题。但是我可以对截至2018年的实际选择做些补充。

我尝试了各种安装配置,同时决定如何建议我的团队过渡到git,包括这些选项。从Windows v2.19.1的git版本开始,这就是我实际观察到的安装过程。

用于设置PATH的Git For Windows安装选项的屏幕截图

仅从Git Bash使用Git

如前所述,不会对系统路径进行任何修改。git status在Windows命令提示符下输入简单命令cmd.exe,将失败'git' is not recognized as an internal or external command, operable program or batch file

从Windows命令提示符使用Git

我可以只更改PATH中目录的顺序以防止发生冲突吗?

这是第二个选项的作用吗?(“使用Windows命令提示符中的Git-此选项被认为是安全的,因为它仅添加了一些最小的Git包装器”)

更改订单始终是您的选择,但是不可以,第二选择似乎与订购无关。(无论如何,路径添加似乎都在路径的末尾。我有点怀疑在某些时候所做的更改。)这是关于将哪些目录添加到路径的问题,第二个和第三个选项之间是不同的。

当它说它将在“ PATH”中添加“最小”的Git包装器时,实际上似乎是在cmd将(即将安装的)安装文件夹添加到路径中。这是我最终建议团队使用的选项。我们现在C:\Program Files\Git\cmd走上了道路。

什么是在cmd目录中?对我来说,只有六个文件:

  • git.exe
  • git-gui.exe
  • gitk.exe
  • git-lfs.exe
  • start-ssh-agent.cmd
  • start-ssh-pageant.cmd

与Anaksunaman的答案一样,我不确定何时还不够。任何以开头的普通命令git <some command>都可以在包含git.exe的情况下工作。

使用Windows命令提示符中的Git和可选的Unix工具

这包括将第二个选项添加<Install dir>\Git\cmd到路径,还添加<Install dir>\Git\mingw64\bin<Install dir>\Git\usr\bin。这两个目录都有大量的可执行文件,包括其他答案中提到的find,sort和kill。

我不建议列出可能涉及的几百个项目,而是鼓励相关用户采用第二种方法,完成安装,然后查看这些目录。如果您对这种风险感到满意,那么自己添加<Install dir>\Git\mingw64\bin并添加<Install dir>\Git\usr\bin到自己的路径上将等同于收回时间机器并选择第三个选项。


由于多年来的假设和背景都在变化,因此可能需要用“这里是2019年的新视角...”开始一个已有四年历史的问题的新答案
Christopher Hostage

1
这仍然是该主题上最有用的问题,因此我认为获得更多答案很重要。我增加了一年,尽管我原以为版本号会达到相同的目的。
ojchase

7

它将与哪些工具发生冲突?

我个人不确定完整列表,但是这个StackOverflow问题

“这包括查找,删除和排序。前三个(及类似)的问题在于它们在两个操作系统中都存在,并且在每个操作系统中的功能都不同。”

它们可能不是您经常使用的,但是它们很常见,因此Git感到有必要警告您有关意外行为的警告。

有趣的是,它们更有可能出现在第三方程序(主要是脚本)中,因此效果的程度很可能取决于您使用依赖于任何这些命令的程序的数量。

这是第二个选项的作用吗?(“使用Windows命令提示符中的Git-此选项被认为是安全的,因为它仅添加了一些最小的Git包装器”)

基本上,它允许您从命令行(cmd.exe)将Git与所有常见的Git命令一起使用。对于您可能想从Windows命令行编写脚本或手动实现的内容的99%,此选项非常安全且有用。我使用此选项,并且从未亲自遇到任何问题。

安装后,您可能还希望查看图形化的git界面(例如Windows的GitHub DekstopSourceTree),并且不要忘记安装中还附带了Git bash。


实际上,我想使用CMD中的某些工具,并且想知道2nd选项是否使任何unix工具可用或仅使git。
Aleksandr Dubinsky

据我所知,它只是git。
Anaksunaman

3

它将与哪些工具发生冲突?

我会让安装程序修改您的PATH。如果您不希望将其从PATH中删除,则很容易。然后,我将查看目录并进行比较,例如diff,comm等,以找出冲突。尽管我不知道在哪里,但应该将它们记录在文件中。

有关系吗?它们是系统常用的吗?(我从未亲自使用过它们。)

我最近没有使用cygwin工具,但是当我不得不使用Windows时,通常我的PATH中首先会出现cygwin工具目录,而不会出现问题。

最大的风险是,如果程序正在寻找冲突的Windows命令行工具,它将执行错误的程序。考虑到正在进行的cmd.exe脚本数量非常少,我认为这样做的可能性很小。

我可以只更改PATH中目录的顺序以防止发生冲突吗?

是。只需将cygwin或其他git添加到PATH的末尾即可。请记住,某些命令序列在cygwin中无法正常工作。另外,考虑一下,我认为cygwin控制台正确设置了路径。使用cygwin时设置自己的路径将使cygwin也正常运行。

这是第二个选项的作用吗?(“使用Windows命令提示符中的Git-此选项被认为是安全的,因为它仅添加了一些最小的Git包装器”)

听起来好像这会将一个目录插入到PATH中,该目录仅包含您需要使用git的git命令。


实际上,git使用MSYS而不是Cygwin。区别在于msys是本机win32,而cygwin使用仿真库来适应posix代码。
Aleksandr Dubinsky
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.