#bash #git
#bash #git
Вопрос:
Я пытаюсь создать скрипт, который будет автоматически заполняться из репозитория git каждый час, если будут изменения. Он запущен на raspberry pi.
#!/bin/bash
VAR=$(git merge-base origin master)
VAR2=$(git rev-parse origin)
if [ "$VAR" == $VAR2 ];
then
echo "hi"
git pull
else
echo "no"
fi
Это мой код. Он возвращает эти ошибки
фатальное: недопустимое имя объекта origin фатальный: неоднозначный аргумент ‘origin’: неизвестная редакция или путь, которого нет в рабочем дереве. Используйте ‘—‘, чтобы отделить пути от ревизий, вот так:
git <command> [<revision>...] -- [<file>...]
Однако две команды, приведенные выше, из-за которых возникают ошибки, отлично выполняются на моем компьютере с Windows. В чем здесь проблема?
Решение Я обнаружил, что в моей ветке git -a у меня не было головной ветки, поэтому я создал ее с помощью git symbolic-ref refs/ remotes/origin/HEAD refs / remotes /origin /master
Ответ №1:
Я не совсем уверен в вашей настройке… Но, вероятно, источник является удаленным, а не филиалом…. И если это так, то из-за этого произойдет сбой как merge-base, так и rev-parse. Для работы Merge-base требуется как минимум 2 ветви или ревизии… для rev-parse требуется одна ветвь. Если вы попытаетесь использовать удаленный в качестве одного из аргументов, следует ожидать одного взрыва.
Комментарии:
1.
origin
будет проанализирован какrefs/remotes/origin/HEAD
на шаге 6 протокола преобразования имени в хэш-идентификатор (см. gitrevisions), приrefs/remotes/origin/HEAD
условии, что он существует. Хотя, вероятно, здесь имеет больше смысла использоватьorigin/master master
.