Страницы

Поиск по вопросам

суббота, 1 июня 2019 г.

Клонирование git и push в два репозитория

Создал я локальный репозиторий у себя на компьютере:
cd /path/to/git/repo/ git init --bare --shared
В другом месте тоже инициализировал, с которым работал так, напрямую:
cd /path/to/my/project/ git init echo "Helo" >> hello.txt git add . git commit -m "Init"
Вот теперь я хочу в свой локальный репозиторий сделать пуш:
git remote add origin /path/to/git/repo/ git push origin master
Все хорошо, все отлично. Если запустить эту команду в другой директории, он мне все скопирует, то есть сделает то, что я ожидаю:
cd /path/to/test/dir/ git clone /path/to/git/repo/
Теперь я хочу:
Все свои собранные коммиты запушить на свежий, только что созданный репозиторий в bitbucket.org. Иметь возможность пушить как на битбакет, так и в локальный репозиторий
Что мне нужно сделать, чтобы добиться такого результата?
P.S. Отвечая на вопрос, зачем мне нужен локальный репозиторий. Мне нужно всегда иметь на компьютере копию проекта с учетом всех gitignore. Даже тогда, когда у меня нет интернета. Если есть возможность провернуть это без создания локального репозитория, можете дать совет. Но вопрос, как запушить все коммиты на битбакет и не видеть постоянные сообщения Everything up-to-date и другие, не смотря на то, что на компе у меня лежит целая куча нужных мне коммитов, остается открытым


Ответ

когда вы сделали git init, вы уже создали локальный репозиторий. он находится в под-каталоге .git
файлы же, которые вы создали в этом каталоге (/path/to/my/project/), а затем с помощью git add и git commit «добавили в репозиторий», на самом деле представляют собой лишь рабочую копию содержимого репозитория.
репозиторий может быть и без рабочей копии. создаётся такой репозиторий при использовании опции --bare у команд git clone, git init. фактически вы получаете в таком репозитории то же содержимое, что и в каталоге .git у репозитория с рабочей копией
поэтому создавать ещё одну локальную копию репозитория, как сделали вы в каталоге /path/to/git/repo/, нет необходимости. всё содержимое репозитория, все коммиты, вся история — доступны в любой из копий git-репозитория и без доступа к интернету. и коммиты в эту копию репозитория вы можете делать без доступа к интернету.

а как сделать вторую (третью, десятую) копию репозитория на каком-нибудь удалённом сервере, вы уже знаете:
$ git remote add ... $ git push ...

о том, как одной командой git push отправить изменения сразу в несколько репозиториев, написано, например, здесь и здесь. и по-русски: Отправить изменения в несколько репозиториев одной командой push

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

Отправить комментарий