安装 Git 时,它提供了将所有 msys *nix 工具添加到 PATH 中的选项,但是它会发出警告:
警告:这将覆盖 Windows 工具,如“查找”和“排序”。只有理解其含义后才可使用此选项。
我的问题是:
- 它究竟会与哪些工具发生冲突?
- 这有关系吗?系统常用它们吗?(我个人从未使用过它们。)
- 我可以更改 PATH 中目录的顺序来防止冲突吗?
- 这是第二个选项的作用吗?(“从 Windows 命令提示符中使用 Git - 此选项被认为是安全的,因为它只添加了一些最小的 Git 包装器”)
答案1
我同意其他答案的一般分析,也无法准确预测您可能会遇到什么样的冲突。我知道我自己在选择第三个选项时没有注意到任何异常。但我可以补充一点截至 2018 年这些选项的实际作用。
在决定如何建议我的团队过渡到 git 时,我尝试了各种安装配置,包括这些选项。这是我实际观察到的安装对我的路径所做的操作,截至 Windows 版 git v2.19.1。
仅从 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 工具
- git-gui.exe
- 执行文件
- git-lfs.exe
- 启动ssh代理程序.cmd
- 启动-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
到路径中就相当于乘坐时光机回到过去并选择第三个选项。
答案2
它究竟会与哪些工具发生冲突?
我个人不确定完整的清单,但是这个 StackOverflow 问题说
“这包括查找、杀死和排序[...] 前三个(和类似的)问题在于它们存在于两个操作系统中,并且在每个操作系统中功能不同。”
您可能不经常使用它们,但是它们足够常见,因此 Git 觉得有必要警告您注意意外行为。
据传,它们更有可能出现在第三方程序(主要是脚本)中,因此其影响程度很可能取决于您使用依赖于这些命令的程序的程度。
这是第二个选项的作用吗?(“从 Windows 命令提示符中使用 Git - 此选项被认为是安全的,因为它只添加了一些最小的 Git 包装器”)
基本上,它允许您从命令行 (cmd.exe) 使用 Git 以及所有常见的 Git 命令。此选项非常安全,并且对于您可能想要从 Windows 命令行编写脚本或手动实现的 99% 的操作非常有用。我使用此选项,个人从未遇到任何问题。
安装后,你可能还想查看图形化 git 界面(例如适用于 Windows 的 GitHub Dekstop或者源树) 并且不要忘记 Git bash 也随安装一起提供。
答案3
它究竟会与哪些工具发生冲突?
我会让安装程序修改您的 PATH。如果您不想要它,可以很容易地将其从 PATH 中删除。然后我会查看目录并进行一些比较,如 diff、comm 等,以找出冲突。它们应该记录在某个地方,但我不知道在哪里。
这有关系吗?系统常用它们吗?(我个人从未使用过它们。)
我最近没有使用 cygwin 工具,但是当我不得不使用 Windows 时,我通常将 cygwin 工具目录首先放在我的 PATH 中,这样不会出现问题。
最大的风险是,如果某个程序正在寻找冲突的 Windows 命令行工具,它将执行错误的程序。考虑到 cmd.exe 脚本的数量极少,我认为发生这种情况的可能性很小。
我可以更改 PATH 中目录的顺序来防止冲突吗?
是的。只需将 cygwin 或任何git
添加项移到 PATH 末尾即可。只需记住,某些命令序列在 cygwin 中无法正常工作。另外,仔细想想,我认为 cygwin 控制台正确设置了路径。使用 cygwin 时设置自己的路径也会使 cygwin 正常运行。
这是第二个选项的作用吗?(“从 Windows 命令提示符中使用 Git - 此选项被认为是安全的,因为它只添加了一些最小的 Git 包装器”)
听起来好像这会将一个仅包含使用 git 所需的 git 命令的目录插入到 PATH 中。