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

관련 정보