GIT,在每个更改的字段上执行命令?

时间:2016-03-22 09:56:31

标签: git bash

我想对每个没有暂存更改的文件执行一些shell命令。

E.g。如果git status显示

On branch xxxxxxx
Your branch is up-to-date with 'origin/xxxxxxxxx'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   client/.../reports.coffee
    modified:   client.../tools.coffee

我想对文件reports.coffeetools.coffee执行命令。

我不想使用find,因为文件可能会在不同时间发生变化。你知道我怎么能实现这个目标吗?

4 个答案:

答案 0 :(得分:2)

您也可以使用此命令:

git status -s | grep '??' | cut -f2 -d' ' | xargs echo

并用您要执行的命令替换echo

答案 1 :(得分:1)

你应该使用git hooks:

https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

您会在.git/hooks找到要更改的文件。

Here是一个很好的教程

答案 2 :(得分:0)

这是一个更好的开始模式:

git status -s | grep '.M ' | cut -c 4- | xargs echo

.M 更改为您要捕获的状态。

cut -c 4- 简单地删除前 3 个字符并仅返回第 4 个字符并返回到最后。

答案 3 :(得分:0)

我想出了这个逻辑更少的解决方案:git diff --name-only | xargs -I{} echo {}