#!/bin/bash
REPOS=(GitRepoA GitRepoB GitRepoC AnotherRepoA)
for R in "${REPOS[@]}"; do
echo "Checking repo $R."
pushd "$R" >/dev/null && {
git status
popd >/dev/null
}
done
function check_repos {
REPOS=(GitRepoA GitRepoB GitRepoC AnotherRepoA)
for R in "${REPOS[@]}"; do
echo "Checking repo $R."
pushd "$R" >/dev/null && {
git status
popd >/dev/null
}
done
}
gitr () {
for f in $(find . -type d -name .git | awk -F"/.git$" '{print $1}'); do
echo
echo "................................ (cd $f && git $*) ........................................."
echo
(cd $f && git $*)
done
}
代码文件中的代码段可以使用.“”命令轻松加载到bash中,例如:
. gitr.sh # file containing gitr() function, if not in a profile file
然后我就可以跑了
gitr status
我得到的结果是:
................................ (cd ./dir0 && git status) .........................................
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
................................ (cd ./dir1 && git status) .........................................
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
................................ (cd ./dir2 && git status) .........................................
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
................................ (cd . && git status) .........................................
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
7条答案
按热度按时间ddarikpa1#
如果你需要递归(或者如果你不需要也可以):
对于每个名为
.git
的目录,将从包含它的目录(-execdir
)中执行git status
。你也可以附加
-prune
,这样就不会在git项目的子目录中更进一步,这样会更高效(但可能会跳过git子模块--我不知道子模块是如何工作的,我从来没有使用过它们):t0ybt7op2#
遍历每个目录,并分别使用命令行选项
--work-tree
和--git-dir
设置工作目录和.git
目录:jogvjijk3#
你可以创建一个脚本,也可以把它创建成一个函数,放在
.bash_profile
中。将其放入主文件夹并运行
如果你的回购协议是统一的,你可以做一些事情,如:
或者只是
只是作为一个函数:
ar5n3qh54#
我写了一个shell脚本mgit来处理这个问题,它读取当前目录中的一个隐藏文件.mgit,这个文件包含了一系列作为独立git仓库的文件夹。
w46czmvw5#
它是递归工作的,您可以根据需要更改
maxdepth
和mindepth
bxgwgixi6#
其中:
kknvjkwl7#
我尝试了这里所有的建议,由于各种原因,没有一个对我真正有效。
这是我的个人资料,我经常使用它。
代码文件中的代码段可以使用.“”命令轻松加载到bash中,例如:
然后我就可以跑了
我得到的结果是:
或
或