git是否使用sh?如果是这样可以改为使用bash?

时间:2013-12-20 11:39:50

标签: git bash cygwin sh

当我运行git命令时,我经常得到

sh: line 0: igncr: invalid option name

作为输出。这是由我必须让cygwin容忍的设置引起的。看起来git正在产生一个sh进程来运行。我可以将它配置为bash shell吗?

它没有增加太多,但这里要求的是git命令

gt ad -p A/B/C.csproj

导致失败的shell命令是

export SHELLOPTS
set -o igncr

如果使用GIT_TRACE = 1

运行
trace: exec: 'git-ad' '-p' 'A/B/C.csproj'
trace: run_command: 'git-ad' '-p' 'A/B/C.csproj'
trace: alias expansion: ad => 'add'
trace: built-in: git 'add' '-p' 'A/B/C.csproj'
trace: run_command: 'add--interactive' '--patch' '--' 'A/B/C.csproj'
trace: exec: 'git-add--interactive' '--patch' '--' 'A/B/C.csproj'
trace: run_command: 'git-add--interactive' '--patch' '--' 'A/B/C.csproj'
trace: built-in: git 'rev-parse' '--show-prefix'
trace: built-in: git 'config' '--get-colorbool' 'color.interactive' 'false'
trace: built-in: git 'config' '--get-color' 'color.interactive.prompt' 'bold blu                      e'
trace: built-in: git 'config' '--get-color' 'color.interactive.header' 'bold'
trace: built-in: git 'config' '--get-color' 'color.interactive.help' 'red bold'
trace: built-in: git 'config' '--get' 'color.interactive.help'
trace: built-in: git 'config' '--get-color' 'color.interactive.error' 'red bold'
trace: built-in: git 'config' '--get-colorbool' 'color.diff' 'false'
trace: built-in: git 'config' '--get-color' 'color.diff.frag' 'cyan'
trace: built-in: git 'config' '--get-color' 'color.diff.plain' ''
trace: built-in: git 'config' '--get-color' 'color.diff.old' 'red'
trace: built-in: git 'config' '--get-color' 'color.diff.new' 'green'
trace: built-in: git 'config' '--get-color' '' 'reset'
trace: built-in: git 'config' '--bool' '--get' 'interactive.singlekey'
trace: built-in: git 'rev-parse' '--git-dir'
trace: built-in: git 'update-index' '--refresh'
trace: built-in: git 'ls-files' '--' 'A/B/C.csproj'
sh: line 0: igncr: invalid option name
trace: built-in: git 'diff-index' '--cached' '--numstat' '--summary' 'HEAD' '--' 'A/B/C.csproj'
trace: built-in: git 'diff-files' '--numstat' '--summary' '--raw' '--' 'A/B/C.csproj'
trace: built-in: git 'diff-files' '-p' '--' 'A/B/C.csproj'
trace: built-in: git 'diff-files' '-p' '--color' '--' 'A/B/C.csproj'

1 个答案:

答案 0 :(得分:2)

请运行前缀为GIT_TRACE=1的失败git命令,以查看生成的失败shell命令的详细信息,并从那里获取...

编辑:看到跟踪后,鉴于igncr是一个特定于cygwin的bash选项,请考虑添加一个bash函数来覆盖gt命令并关闭该shell选项。

例如,

gt () { (set +o igncr; git "$@";) }
gt ls-files

当然你应该将gt函数移动到你的.bashrc或类似函数。