【问题标题】:Force git status to show only filenames, without path强制 git status 只显示文件名,不显示路径
【发布时间】:2018-12-28 14:18:41
【问题描述】:

是否有可能使用例如 sed 工具使 git 状态只显示文件名,没有任何路径?而不是:

/relative/path/to/file/filename.py

我只欢迎:

filename.py

我的项目路径很长,导致 git status 的输出难以阅读。

git状态输出示例:

modified:   d/da/mvp/view/dialogelement/composite/Tab.py
modified:   da/dab/core/api/Messages.py

【问题讨论】:

标签: git


【解决方案1】:

使用 Bash:

for fname in $(git status --short | cut -d ' ' -f 2); do basename $fname; done

Will 会给你预期的输出。但要小心,目录会显示为文件。

【讨论】:

  • 它有一些缺点 - 当有修改和未跟踪文件的部分时,它只显示较低的部分,但无论如何它是一个很大的帮助。谢谢
  • @Krzysztof 请告诉我更多信息,看起来很有趣
  • 您的命令没有检测到以上任何内容:未跟踪的文件:(使用“git add ...”包含将提交的内容)
  • @Krzysztof 真的吗?这是我的输出gist.github.com/arount/840115d3deca8048ef57ca693aff919dfour 由我的命令输出)
【解决方案2】:

你可以这样做:

git status | sed 's-\(#\t\+modified: \+\)\(.*/\)\([^/]\+\)-\1.../\3-'

这会将任何以modified: 开头的文本和一堆包含斜杠的空格替换为.../,直到最后一个斜杠。路径的前缀、空格和最后一部分将保持不变。

使用-E-r 标志可以通过更少的反斜杠实现类似的结果:

git status | sed -E 's-(#\t+modified: +)(.*/)([^/]+)-\1.../\3-'

【讨论】:

  • 不,它只是删除了开头的“modified:”这个词
  • @Krzysztof。更新
  • 是的。我投了赞成票。一旦我到达我的桌面,我会解决这个问题:)
  • @Krzysztof。我已经更新了我的答案(这次测试之后):)
猜你喜欢
  • 2013-01-11
  • 2015-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 2014-12-04
  • 1970-01-01
相关资源
最近更新 更多