bash 스크립트에서 Git 추가, 커밋, 푸시

bash 스크립트에서 Git 추가, 커밋, 푸시

저는 때때로 커밋하여 조직 모드 파일을 GitHub 저장소와 동기화 상태로 유지하는 간단한 크론 작업을 작성하려고 합니다. 어떤 이유로든 항상 파일을 커밋하지만 git push명령줄에서 스크립트를 실행해도 출력이 표시됩니다.

Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 329 bytes | 329.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To github.com:my/repo.git
   df98efb..0d4943b  master -> master

git status여전히 밀어붙여야 한다고 말하고 있습니다.

On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

이것은 내 스크립트입니다.

#!/bin/sh

message="auto-commit from $USER@$(hostname -s) on $(date)"
GIT=`which git`
REPO_DIR=~/org
cd ${REPO_DIR}
${GIT} add --all .
${GIT} commit -m "$message"
${GIT} push [email protected]:my/repo.git master

내 crontab에서는 다음과 같습니다.

* * * * * echo ["$(date)"] "$(echo "$(~/cron/scripts/org-commit.sh | tail -1)" | xargs)" >> ~/cron/log/org-commit.log 2>&1

에서 ~/cron/log/org-commit.log나는 이것을 보았다:

[Wed Jun 12 16:44:00 CDT 2019] nothing to commit, working tree clean
[Wed Jun 12 16:45:00 CDT 2019] 1 file changed, 1 insertion(+)

첫 번째 줄은 변화 없이 달릴 때의 위치이고, 두 번째 줄은 변화가 있을 때의 위치입니다. git push해당 로그 라인은 다음에서 유래하므로 실행된 적이 없는 것 같습니다 git commit.


이 원인을 어떻게 찾을 수 있나요?

답변1

나는 당신의 문제가 git push실제로 비동기라고 생각합니다. 결과를 변수에 할당한 다음 결과를 에코하면 작동합니다. 다음과 같은 내용이 예상한 응답을 출력해야 합니다.

#!/bin/sh

message="auto-commit from $USER@$(hostname -s) on $(date)"
GIT=`which git`
REPO_DIR=~/org
cd ${REPO_DIR}
${GIT} add --all .
${GIT} commit -m "$message"

gitPush=$(${GIT} push -vvv [email protected]:my/repo.git master 2>&1)
echo "$gitPush"


관련 정보