SourceTree自定义操作中出现“Git命令未找到”错误

4
当我将一个sh文件添加到SourceTree的自定义操作功能时,会出现以下错误信息:
git: command not found

但是当我进入终端使用git命令时,它就不存在了。如果在我的sh文件中添加Git的路径,它就可以工作。

如何在不输入git完整路径的情况下运行我的脚本?

git archive --output=archive-$1.tar $1 $(git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT $1)

为什么SourceTree要求输入完整的Git路径?


你有什么问题? - Tim
为什么我无法运行Git命令而不增加路径? - xuan
嗯... -> 超级用户,无论如何? - quetzalcoatl
@xuan:很可能你的SourceTree与PATH环境变量设置与你的用户账户不同。在控制台中输入echo $PATH(Linux)或echo %PATH%(Windows),并在其他自定义操作中执行,然后比较结果。我敢打赌它们会有很大的不同。 - quetzalcoatl
1
感谢大家告诉我关于$path的事情。 后来我查看了一下~/.Profile文件, 我的路径是PATH=$PATH:$HOME/.rvm/bin, 然后我将内容更改为PATH=/usr/local/bin:$PATH:$HOME/.rvm/bin, 并将source ~/.profile添加到sh文件中,这样就解决了。 - xuan
显示剩余2条评论
2个回答

1
SourceTree自定义操作的$PATH与使用终端时不同。
echo $PATH

SourceTree自定义操作bash脚本:

/usr/bin:/bin:/usr/sbin:/sbin

macOS终端:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

将PATH变量更改为使用macOS默认值:

#!/bin/bash

export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

hub sync

可能有更好的方法来完成这个任务。


0

打开终端时,命令bash --login -i会短暂地出现。如果将其添加到自定义操作中,则可以获得与终端相同的路径。

按以下方式设置自定义操作:

  • 要运行的脚本:从浏览窗口中选择bash.exe,它可能在以下位置:

    C:\Users\{user}\AppData\Local\Atlassian\SourceTree\git_local\bin\bash.exe

  • 参数:--login -i c:\path_to_script\script.sh

  • 选中“显示完整输出”和“静默运行命令”以在操作框中查看输出,取消选中“显示完整输出”以隐藏它,除非在运行时单击。

将以下内容添加到脚本中可能很有用,以暂停屏幕以查看任何错误消息(我认为应选中“在单独窗口中打开”并取消选中“静默运行”)

read -p "按[Enter]键继续..."


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接