我想对每个没有暂存更改的文件执行一些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.coffee
和tools.coffee
执行命令。
我不想使用find
,因为文件可能会在不同时间发生变化。你知道我怎么能实现这个目标吗?
答案 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 {}