Как создать скрипт bash для клонирования репозиториев с помощью git checkout?

#windows #bash #git #git-bash

#Windows #bash #git #git-bash

Вопрос:

Я хочу создать скрипт bash для клонирования репозиториев и использовать git checkout. Я использую Windows.

 #!/bin/bash

PATH="C:UsersProjects"
echo "$PATH"

git clone https://mygitrepository.com $PATH
cd "$PATHmygitrepository"
git checkout Development 

cd ..
git clone https://mygitrepository2.com $PATH
cd "$PATHmygitrepository2"
git checkout Development 
  

Я хочу, чтобы все репозитории были клонированы с использованием разработки ветки. Но у меня следующая ошибка:

 > $ ./Clone_Repositories.sh C:Users\Projects ./Clone_Repositories.sh:
> line 5: git: command not found ./Clone_Repositories.sh: line 7: cd:
> mygitrepository: No such file or directory ./Clone_Repositories.sh:
> line 9: git: command not found ./Clone_Repositories.sh: line 13: git:
> command not found ./Clone_Repositories.sh: line 15: git: command not
> found
  

Комментарии:

1. PATH это плохой выбор для имени переменной… Выберите что-нибудь другое.

2. PATH это переменная, которая определяет местоположение ваших двоичных файлов. Он должен содержать местоположение git и других приложений.

Ответ №1:

Возможно, вы захотите изменить имя переменной, которое вы используете. $PATH это переменная среды и us, используемая для определения того, в каких каталогах выполняется поиск при поиске конкретной программы или исполняемого файла.

https://en.wikipedia.org/wiki/PATH_ (переменная)

Похоже, что установка PATH вверху не позволяет bash находить git двоичный файл. Попробуйте это вместо этого.

 #!/bin/bash

MY_PATH="C:UsersProjects"
echo "$MY_PATH"

cd "$MY_PATH"
git clone https://mygitrepository.com
cd "$MY_PATHmygitrepository"
git checkout Development

cd "$MY_PATH"
git clone https://mygitrepository2.com
cd "$MY_PATHmygitrepository2"
git checkout Development
  

Ответ №2:

Как упоминал @tkausl, создавая переменную с именем $PATH в bad, он перезаписал существующую, сделав git исполняемый файл недоступным для поиска. Переименуйте переменную, и она должна работать:

 > cat /tmp/t.sh 
#!/bin/bash

PATH="C:UsersProjects"
echo "$PATH"

git status

ghislain@linux (1): ~/home_conf (master *=) ✔
> /tmp/t.sh 
C:UsersProjects
/tmp/t.sh: line 6: git: command not found
  

И здесь с другой переменной:

 ghislain@linux (1): ~/home_conf (master *=) ✖ (148)
> cat /tmp/t.sh 
#!/bin/bash

PROJECTS_PATH="C:UsersProjects"
echo "$PROJECTS_PATH"

git status

ghislain@linux (1): ~/home_conf (master *=) ✔
> /tmp/t.sh 
C:UsersProjects
On branch master
Your branch is up to date with 'origin/master'.