#git #bash #github #azure-devops #git-bash
#git #bash #github #azure-devops #git-bash
Вопрос:
Я написал автоматический скрипт с использованием токена личного доступа vsts для клонирования всех репозиториев в проекте в мой локальный. Сценарий
repoPaths=('repo1Url','repo2Url',etc...)
for i in "${repoPaths[@]}"
do
git clone $repPaths[i] $localPath
done
Теперь я пытаюсь внести некоторые изменения в приведенный выше сценарий bash, чтобы извлечь последние изменения, если клон доступен из всех репозиториев.
Пожалуйста, предложите.
Комментарии:
1. При запуске вы
git clone
получаете последние изменения на данный момент.2. Не могли бы вы пояснить, что вы подразумеваете под «клон доступен», возможно, с примером?
3. @Ashutosh Jindal: когда вы запускаете скрипт в первый раз, создается клон, теперь скажем, я вношу некоторые изменения в local, теперь, если я снова запущу скрипт, я хочу объединить свои локальные изменения с последними, в настоящее время это не реализовано.
4. Вы ищете
git pull
?
Ответ №1:
У вас может быть 2 шага: один для извлечения всех репозиториев в каталоге x и один для клонирования всех репозиториев в каталоге x. Чего-то подобного должно быть достаточно:
find . -type d -depth 1 -exec git --git-dir={}/.git --work-tree=$PWD/{} pull origin master ;
Таким образом, в сочетании это было бы:
find . -type d -depth 1 -exec git --git-dir={}/.git --work-tree=$PWD/{} pull origin master ;
repoPaths=('repo1Url','repo2Url',etc...)
for i in "${repoPaths[@]}"
do
git clone $repPaths[i] $localPath
done
Примечание: это приведет к некоторым ошибкам, которые выглядят так, как fatal: destination path 'repo1Url' already exists and is not an empty directory.
если бы он уже существовал