Извлекает последние изменения из git для определенного репозитория

#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. если бы он уже существовал