【问题标题】:How can I get a summary similar to git add --interactive?如何获得类似于 git add --interactive 的摘要?
【发布时间】:2014-01-07 14:39:44
【问题描述】:

我正在寻找一个 Bash 命令(或命令序列),它打印 Git 工作副本中更改的文件的摘要。摘要应该包括每个文件中的插入和删除的数量,以及它们是否被暂存。

命令git add --interactive(与git add -i 同义)给出了我想要的摘要(以及其他内容)。问题是它不只是打印和退出,它启动了一个完整的非 Bash shell。这是git add -i中我喜欢的部分:

bash$ git add -i
         staged     unstaged path
1:    unchanged        +3/-0 trunk/src/analyzer.c
2:    unchanged       +5/-13 trunk/src/converter.c

这是一个很好的总结。不幸的是,在它打印出来之后,你就没有回到 Bash 中了。要返回 Bash,您需要输入 q 然后输入退出。我真的希望它只打印摘要然后停止。

这是我尝试过的:

  1. 在 Bash 终端中键入以下内容:git add -i; q。这个不行,还是需要你手动按q,然后因为第二个q报错。

  2. 将以下内容放入脚本gitsummary.sh,然后运行它:git add -i,最后有或没有; q。同样的问题。

如何以完全非交互的方式获取此摘要?我可以想到两种可能的解决方案:

  1. 使用 Bash 技巧,等待几分之一秒,然后模拟按键。

  2. 使用不同的 Git 命令打印相同的信息,但不会启动奇怪的小 shell。

我的主要设置:Mac OS X 10.9 和终端(运行 /bin/bash)。

我的辅助设置:Windows 7 或 8 和 Cygwin 运行 Bash。

【问题讨论】:

    标签: git bash shell


    【解决方案1】:

    这些都应该给你你想要的:

    git diff --numstat
    git diff --stat
    

    【讨论】:

    • 问题 1:这两个命令都完全忽略了暂存文件,我也很想看到暂存文件。问题 2:这两个命令都没有提到 ?? 文件(我说的是尚未跟踪但也未被忽略的文件,即新文件)。不过,感谢您的建议。
    • 更接近我想要的,但仍然不是我想要的:git diff --numstat HEAD。我不喜欢git diff --stat HEAD,因为它没有单独列出插入和删除,它似乎将它们加在一起,然后以相对比例显示加号和减号。
    • @SerMetAla:插入/删除对于未跟踪的文件意味着什么?如果您真的想要它们,请编写一个脚本,将git diff 输出与计算未跟踪文件中的行数的东西合并(使用git ls-files -o 来查找它们)。
    • 我不希望未跟踪文件中的插入/删除次数,我只希望未跟踪文件显示在列表期间。它可以说不适用,但将文件名放在正确的位置。
    • 好吧,这很有道理。只需使用git ls-files -o 列出这些文件(并根据需要格式化输出)。
    猜你喜欢
    • 2017-01-14
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    相关资源
    最近更新 更多