Відповіді:
Якщо ви хочете дублювати всі об'єкти з основного репо, зробіть це всередині основного репо:
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-fetch --allвсередині оголеного сховища, я не бачив оновлень, які я вносив до основного репо, але при натисканні на них з основного репо-файлу git push --all <url-of-bare-repo>я бачу оновлення в git log. Імовірно, для цього є просте пояснення - може хтось пояснить?
git logне показує ці оновлення в голому репо. (Ні git log --all, і ні робоча репо, створена шляхом клонування голого репо - або через, git log --allабо просто переглянувши нові файли, які там повинні з’явитися). Це досить швидкий тест, щоб переконатись у собі. В основному мені просто цікаво, чого мені не вистачає.
git fetch -q origin master:masterвсередині місцевого голого репо. Це отримає новий матеріал з головного відділення github та оновить вашу локальну гілку master до нього.
master:masterте, що потрібно для переміщення HEAD вперед до віддаленого репо. У моєму випадку через проблему я більше не міг підключитися до нашого голого репо, тому що git був відсутній. Поки це не вирішується, я роблю зворотний тунель і піднімаюсь до центрального репо, використовуючи: git fetch ssh://localhost:8765/... master:masterі це працює як шарм. Дякую!
git fetch origin *:*
Я створив сховище за допомогою наступної команди
git clone --bare <remote_repo>
Тоді я спробував оновити голий клон, використовуючи відповідь Томаса, але це не вийшло мені. Щоб оновити голий сховище (про що я думаю, запитував Let_Me_Be), мені довелося створити дзеркальне сховище:
git clone --mirror <remote_repo>
Тоді я міг би виконати таку команду в дзеркальному сховищі, щоб захопити оновлення основного сховища:
git fetch --all
Я натрапив на це рішення, прочитавши Mirror a Git Repository by Pulling
[remote "origin"]розділ додайте fetch = +refs/*:refs/*іmirror = true
Єдине рішення, окрім відтворення, git clone --mirror- це від Грегора :
git config remote.origin.fetch 'refs/heads/*:refs/heads/*'
тоді ви можете, git fetchі ви побачите оновлення. Дивним є те, що до цього, навіть якщо є remoteналаштований, він не має гілок, перелічених у git branch -a.
git remote updateвиконувати роботу.
--forceі --pruneвідповідно до git fetchрядка.
Припустимо:
$ 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спочатку перейдете до каталогу
originце не визначено, ви завжди можете замінити originчастину на шлях / URL до вашого оригінального сховища. напр.$ git --git-dir=foo.git fetch https://github.com/.../foo.git +refs/heads/*:refs/heads/*
Після багато возитися я виявив, що це працює на мене.
Один раз:
git clone --mirror ssh://git@source.address:2000/repo
git remote add remote_site ssh://git@remote_site.address/repo
git config remote.origin.fetch 'refs/heads/*:refs/heads/*'
Щоразу, коли я хочу синхронізувати:
cd /home/myhome/repo.git
git --bare fetch ssh://git@source.address:2000/repo
git fetch ssh://git@source.address:2000/repo
git push --mirror remote_site
git config remote.origin.fetch 'refs/heads/*:refs/heads/*') - ключ. Гарна відповідь, дякую!
git config remote.origin.fetch 'refs/heads/*:refs/heads/*'є рядком . Після натискання на цю команду я просто можу git fetchі репо синхронізується з віддаленою.
Додайте голое сховище як віддалене сховище, а потім використовуйте git push.
Для мене це поєднання спрацювало:
git remote add remote_site https://github.com/project/repo.git
git fetch -u remote_site +refs/heads/:refs/heads/*
git push --mirror
-u параметр для вибору був необхідний, інакше я отримую повідомлення про помилку: "Відмова від отримання поточних реф / глав / master не-голого сховища" (див. також https://stackoverflow.com/a/19205680/4807875 )