Я создал голый репо, чтобы опубликовать мой репозиторий, но я не могу понять, как обновить голый репо с текущим состоянием основного репозитория.
Как обновить мое голого репо?
Ответ 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
.