Как обновить мое голого репо?

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

Ответ 1

Если вы хотите дублировать все объекты из основного репо, сделайте это внутри основного репо:

git push --all <url-of-bare-repo>

В качестве альтернативы сделайте выборку внутри голого репо:

git fetch <url-of-main-repo>

Вы не можете сделать притяжение, потому что тяга хочет слиться с HEAD, который не имеет голого репо.

Вы можете добавить их в качестве пультов, чтобы сохранить себя впечатывание в будущем:

git remote add <whatever-name> <url-of-other-repo>

Тогда вы можете просто сделать

git push --all <whatever-name>

или

git fetch <whatever-name>

в зависимости от того, в каком репозитории вы находитесь. Если <whatever-name> - origin, вы можете вообще отказаться от него.

Отказ от ответственности: я не гуру git. Если бы я сказал что-то не так, я бы хотел быть просвещенным!

Обновление: прочитайте комментарии!

Ответ 2

Я создал репозиторий, используя следующую команду

git clone --bare <remote_repo>

Затем я попытался обновить голой клон, используя ответ Томаса, но это не сработало для меня. Чтобы получить голый репозиторий для обновления (что я думаю, что Let_Me_Be спрашивал), мне пришлось создать зеркальный репозиторий:

git clone --mirror <remote_repo>

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

git fetch --all

Я нашел это решение, прочитав Зеркально Git Repository By Pulling

Ответ 3

Единственным решением, кроме воссоздания с git clone --mirror, является от Gregor:

git config remote.origin.fetch 'refs/heads/*:refs/heads/*'

то вы можете git fetch, и вы увидите обновления. Странно то, что до этого, даже если есть настроенный remote, он не имеет ветвей, перечисленных в git branch -a.

Ответ 4

Предполагая, что:

$ git clone --bare https://github.com/.../foo.git

Извлечь с помощью:

$ git --git-dir=foo.git fetch origin +refs/heads/*:refs/heads/* --prune

Примечание: --git-dir=foo.git не требуется, если вы cd в каталог в первую очередь.

Ответ 5

После долгих беспорядков я обнаружил, что это работает для меня.

Когда:

git clone --mirror ssh://[email protected]:2000/repo
git remote add remote_site ssh://[email protected]_site.address/repo
git config remote.origin.fetch 'refs/heads/*:refs/heads/*'

Каждый раз, когда я хочу синхронизировать:

cd /home/myhome/repo.git
git --bare fetch ssh://[email protected]:2000/repo
git  fetch ssh://[email protected]:2000/repo
git push --mirror remote_site

Ответ 6

Добавьте голый репозиторий в качестве удаленного репозитория, затем используйте git push.