【问题标题】:Is it possible to reduce "git show --name-status --oneline master" to the summary line only?是否可以仅将“git show --name-status --oneline master”减少到摘要行?
【发布时间】:2015-05-10 15:16:58
【问题描述】:

在以下输出中,我想排除以“A”或“M”开头的行。有可能吗?

 $ git show --name-status --oneline master
    4e8f3e9 Added: f1.txt, f2.txt; modified: master_1.txt
    A       f1.txt
    A       f2.txt
    M       master_1.txt

使用“--summary”会有所帮助,但仍会留下“额外”的内容:

$ git show --summary --oneline master
4e8f3e9 Added: f1.txt, f2.txt; modified: master_1.txt
 create mode 100644 f1.txt
 create mode 100644 f2.txt

我发现这里有趣的是,虽然指定了“--oneline”,但输出绝对不限于一行! :)

虽然可以处理输出,例如通过“grep -v”管道传输以获得所需的结果(如下所示),但我正在寻找一个严格基于 git 选项的解决方案。

【问题讨论】:

  • 你试过--summary吗?
  • 刚刚做了,并更新了我的描述以显示输出。谢谢。

标签: git commit summary


【解决方案1】:

日志消息本身是一行,您还要求提供名称-状态行。

"Added: f1.txt, f2.txt; modified: master_1.txt" 只是从提交消息中复制出来的(一行)文本 git。如果您不希望它显示更改文件的名称和状态,请执行

git show -s --oneline master   # `-s` is short for `--no-patch`

因为显示提交的默认设置是比较补丁,除非你告诉它不同的东西。

我看到 git 文档,嗯,没有以最好的方式组织,以便轻松找到 -s 选项。 . .

【讨论】:

  • 通过您指出从提交日志中获取的单行文本让我意识到我自己造成了混乱! :( 原来的 cmd,git show --name-status --oneline master,结果正是我要找的,即更改文件的“列表”。提交日志“如此简洁”,我认为这是'git log'的一个特性,即git检测到并报告了一些东西。结果,我认为以“A”,“M”开头的行是多余的!我的错,对不起!:(跨度>
【解决方案2】:

您可以使用grep -v 删除所有以“A”或“M”开头的行:

git show --name-status --oneline master | grep -v '^[A,M]'

【讨论】:

  • 我更新了描述,表明我对严格基于 git 选项的解决方案感兴趣。
猜你喜欢
  • 2014-04-21
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 2019-04-03
  • 2012-02-03
  • 1970-01-01
相关资源
最近更新 更多