在 bash/zsh 函数中,我该如何做某事,然后根据输出执行 A 或 B?

在 bash/zsh 函数中,我该如何做某事,然后根据输出执行 A 或 B?

此函数会查找文件夹中的每个本地 git 存储库~/src,并git pull对其执行操作。我越来越多地收到错误

Please commit your changes or stash them before you merge.
Aborting

这需要我运行git reset --hard来修复,但我一生都无法弄清楚如何根据 的git pull输出运行该命令,如果我收到上述消息,则运行git reset --hard,如果没有,则像平常一样继续。

当前的半工作功能是:

updatesrc() {
  for i in */.git;
    do (
     echo $i;
     cd $i/..;
     git pull;
    );
  done
}

答案1

你可以做类似的事情

local_changes=$(git status -s)
if [[ -n "$local_changes" ]]; then
    git reset --hard
fi

我确信有一个更合适的 git 子命令。

但如果您根本不关心本地更改,则无条件地进行重置。

git reset --hard
git pull

相关内容