带命令替换的git命令不返回任何内容

时间:2017-07-19 07:58:54

标签: windows git bash shell sh

bash:GNU bash, version 4.3.42(4)-release (x86_64-pc-msys)
操作系统:Windows7
git:git version 2.6.4.windows.1

如果没有命令替换,直接执行git命令将返回正确的答案。

$ git write-tree
76cb4719e27c7d77ef396992b3ba90cd98d22fcd

但是当我使用命令替换执行某些 git命令时,它将不返回任何内容。

$ echo "`git write-tree`"

$ echo "$(git write-tree)"

但最奇怪的是:只有一些git命令会出现此问题,例如:git write-treegit rev-parsegit var。而其他git命令,例如git log,运行良好。

某些环境与我的,操作系统,bash和git完全相同。但一切都很好 因此,我想知道我是否需要配置一些东西。这件事让我很困惑。

1 个答案:

答案 0 :(得分:0)

必须在Windows的最新版本的Git中修复。
这是我在bash会话中使用Git 2.18看到的内容:

select (case when p2.amount <=10 then '0-10'
    else '10 and more' end) diapason,
       sum(p1.amount) total_amount,
       SUM(CASE WHEN p1.sale_type='card' THEN p1.amount ELSE 0 END) card,
       SUM(CASE WHEN p1.sale_type='cash' THEN p1.amount ELSE 0 END) cash,
       SUM(CASE WHEN p1.sale_type='bank' THEN p1.amount ELSE 0 END) bank
from 
(
  select *
  from payments
  where payment_time between '2012-01-01' and '2012-01-30' group by user_id, sale_type 
) p1
join (select user_id, sum(amount) amount
  from payments
  group by user_id) p2
on p1.user_id = p2.user_id
GROUP BY (case when p2.amount <=10 then '0-10'
    else '10 and more' end);

| diapason    | total_amount | card | cash | bank |
| ----------- | ------------ | ---- | ---- | ---- |
| 0-10        | 10           | 10   | 0    | 0    |
| 10 and more | 10           | 0    | 10   | 0    |

如果问题仍然是随机的,请尝试使用CMD session with a simplified PATH进行相同的测试,然后从该会话中启动bash。