複数のストレージがあるフォルダがあります。私が走ることができる方法はありませんかgit branch
?子各フォルダ内のコマンド?
$ ls
project1 project2 project3 project4
以下のような出力が必要です。
$ command
project1 [master]
project2 [dev]
project3 [master]
project4 [master]
答え1
この試み。$1
すべてのリポジトリを含む親ディレクトリである必要があります(または「.」を使用して現在のディレクトリを表す)。
#!/bin/bash
function git_branches()
{
if [[ -z "$1" ]]; then
echo "Usage: $FUNCNAME <dir>" >&2
return 1
fi
if [[ ! -d "$1" ]]; then
echo "Invalid dir specified: '${1}'"
return 1
fi
# Subshell so we don't end up in a different dir than where we started.
(
cd "$1"
for sub in *; do
[[ -d "${sub}/.git" ]] || continue
echo "$sub [$(cd "$sub"; git branch | grep '^\*' | cut -d' ' -f2)]"
done
)
}
これを独自のスクリプトにすることも(置き換えることもできます$FUNCNAME
)、$0
関数内に保存してスクリプトで使用できます。
答え2
for dir in */
do (cd $dir && echo "$dir [$(git rev-parse --abbrev-ref HEAD)]")
done
別名でも
alias brall='for dir in $(ls -d */);do (cd $dir && echo "$dir [$(git rev-parse --abbrev-ref HEAD)]") ; done'
必要なものを(ほぼ)出力します。
project1/ [master]
project2/ [dev]
project3/ [master]
project4/ [master]
答え3
gitディレクトリがいくつかのサブフォルダにあるので、いくつかの調整をする必要がありました。また、$1 で指定された cwd または dir もサポートします。以下は、.bashrcに追加されたエイリアスです。
git_branches() {
if [[ -z "$1" ]]; then
search_dir=$(pwd)
echo "Using current dir: '${search_dir}'"
else
search_dir=$1
fi
if [[ ! -d "$search_dir" ]]; then
echo "Invalid dir specified: '${search_dir}'"
return 1
fi
# Subshell so we don't end up in a different dir than where we started.
(
cd "$search_dir"
for dir in $(find . -name .git -type d -prune); do
(
cd $dir
echo "$dir [$(git rev-parse --abbrev-ref HEAD)]"
);
done
)
}
答え4
基本コマンドは
git branch --show-current
そのフォルダに
したがって、ライナーは次のようになります。
for d in project*; do cd "$d" && b="`git branch --show-current`" && cd - >/dev/null && echo "$d [$b]"; done
エイリアスとして作成するか、スクリプトに入れてコマンドとして使用できます。