Есть ли более простой способ "git init" для нескольких папок в разных репозиториях? - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть около 50 локальных папок, которые я собираюсь инициализировать как отдельные репозитории git для размещения на GitHub.

Мне было интересно, есть ли более простой способ инициализации нескольких репозиториев Git, кроме отдельного запуска git init в каждой из 50 папок.

Я запускаю git init индивидуально для2 хранилища из 50 уже, но это кажется таким утомительным, и я чувствую, что должен быть более легкий путь.

Обновление:

Как указано в этом посте ,я бы запустил следующую оболочку bash?

cd folder-with-all-folders-to-git-init
for D in `find . -type d`
do
    git init && git add . && git commit -m "Initial commit"
done

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Команда структуры частично верна и, в основном, нет, но ее можно сделать достаточно корректной.

У вас есть:

cd folder-with-all-folders-to-git-init
for D in `find . -type d`
do
    git init && git add . && git commit -m "Initial commit"
done

Как минимум, вам нужно cd в каждом каталогедо запуска git init.Это должно быть сделано следующим образом:

cd folder-with-all-folders-to-git-init
for D in `find . -type d`
do
    (cd "$D" && git init && git add . && git commit -m "Initial commit")
done

Это запускает подоболочку, которая устраняет проблемы с символическими ссылками и возвращает вас к тому, с чего вы начали.

Использование обратных кавычек не рекомендуется;используйте обозначение $( … ).Но чтение имен из этого результата также не очень хорошая идея, если в именах могут быть пробелы.Вы бы лучше всего с «шаром».Возможно, стоит попробовать проверить отсутствие подкаталога .git, прежде чем пытаться выполнить git init, особенно если вам нужно запустить скрипт несколько раз.Кроме того, find найдет подкаталоги, такие как существующие .git подкаталоги.

Это приводит к:

cd folder-with-all-folders-to-git-init
for D in *
do
    if [ -d "$D" ] && [ ! -d "$D/.git" ]
    then (cd "$D" && git init && git add . && git commit -m "Initial commit")
    fi
done

Это достаточно надежное решение проблемы,Если действительно есть вложенные каталоги, которые вы хотите превратить в независимые Git-репозитории, вам придется работать немного усерднее, но, вероятно, это не то, что вам нужно.

0 голосов
/ 24 декабря 2018

Вы можете использовать опцию -C с Git, которая говорит Git переключить свой рабочий каталог на другой.Это безопасно с именами каталогов со специальными символами.

cd folder-with-all-folders-to-git-init
while read -r D; do
  if [ -d "$D/.git" ]; then
    continue # a git repo exists
  fi

  git -C "$D" init && \
  git -C "$D" add -A && \
  git -C "$D" commit -m "Initial commit"
done < <(find . -type d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...