eap*_*pen 18 git macos bash shell
我一直在寻找解决方案一段时间,并没有找到我需要的东西.
我在我的Mac(OSX 10.6)上的一个文件夹中有几个Git存储库,并且想要一个循环遍历所有存储库的脚本或工具,如果有任何需要,请告诉我commit.
这是我的结构
Sites
/project1
/project2
/project3
Run Code Online (Sandbox Code Playgroud)
我希望该工具git status在Sites/project1,Sites/project2,Sites/project3中执行,并告诉我们是否有任何更改或需要暂存或提交的新文件.
我发现最接近可能是hackable的脚本就在这里,但即使是那个脚本也不会运行,我收到一个错误:
"意外令牌附近的语法错误`do"
这可能是为*nix编写的.
小智 24
似乎这个问题已经得到了很好的回答,但我想在完成同样的工作之后再投入两美分.
我使用一个简单的bash脚本更接近jcordasc的答案.我做了一件有点不同的事情.查看git的帮助文档,您可以设置git目录和工作目录.这消除了'cd'到目录的需要.并不是说真的有那么大的差别......
#!/bin/bash
for gitdir in `find ./ -name .git`;
do
workdir=${gitdir%/*};
echo;
echo $workdir;
git --git-dir=$gitdir --work-tree=$workdir status;
done
Run Code Online (Sandbox Code Playgroud)
显然他对于如何显示状态更先进/更清洁......
这是一个较老的问题,但我去了更新jcordasc的答案,所以它适用于git 1.7.7.5,我想我也可以在这里贡献它:
https://gist.github.com/3018100
此版本将任何路径或路径作为参数,并为其在参数表示的文件树中的任何位置找到的任何git存储库提供jcordasc的输出.它还支持检测未刷新和未合并的提交.
使用jsut单个shell别名检查多个repo状态.无需安装.所有学分:https://coderwall.com/p/grmruq/git-status-on-all-repos-in-folder
对于bash:
alias gitstat='find . -maxdepth 1 -mindepth 1 -type d -exec sh -c "(echo {} && cd {} && git status -s && echo)" \;'
alias gitstatfull='find . -maxdepth 1 -mindepth 1 -type d -exec sh -c "(echo {} && cd {} && git status && echo)" \;'
Run Code Online (Sandbox Code Playgroud)
或者对于Cshell
alias gitstat 'find . -maxdepth 1 -mindepth 1 -type d -exec sh -c "(echo {} && cd {} && git status -s && echo)" \;'
alias gitstatfull 'find . -maxdepth 1 -mindepth 1 -type d -exec sh -c "(echo {} && cd {} && git status && echo)" \;'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6344 次 |
| 最近记录: |