У мене є сервер, який я знімаю. Єдине, що мені залишилося перенести - це моє сховище. Цей сервер вказаний як джерело (головний) для одного з моїх проектів. Який правильний спосіб перемістити сховище, щоб зберегти історію.
У мене є сервер, який я знімаю. Єдине, що мені залишилося перенести - це моє сховище. Цей сервер вказаний як джерело (головний) для одного з моїх проектів. Який правильний спосіб перемістити сховище, щоб зберегти історію.
Відповіді:
Щоб додати нове місце репо,
git remote add new_repo_name new_repo_url
Потім перемістіть вміст на нове місце
git push new_repo_name master
Нарешті видаліть стару
git remote rm origin
Після цього ви можете зробити те, що сказав bdonlan, і відредагувати файл.git / config, щоб змінити ім'я new_repo_name на походження. Якщо ви не видалите походження (оригінальний віддалений сховище), ви можете просто просто натиснути зміни на нове репо, за допомогою
git push new_repo_name master
git push -u new_repo_name --all
.
git remote rename new_repo_name origin
Якщо ви хочете перемістити всі гілки та теги, вам слід скористатися такими командами:
git clone --mirror [oldUrl]
клонувати старе репо всі гілки
cd the_repo
git remote add remoteName newRepoUrl
щоб встановити новий пульт
git push -f --tags remoteName refs/heads/*:refs/heads/*
натискати всі посилання на відповіді / голови (що, мабуть, те, що ви хочете)
--tags
і refs/heads/*:refs/heads/*
не сумісний із цим --mirror
. stackoverflow.com/a/26552740/1484831 добре працював.
refs/heads/refs/heads
допомогою , git push -f --tags remoteName refs/heads/*:refs/heads/*
так що я Зміннаgit push remoteName --mirror
push
також підтримує --mirror
. git clone --mirror; cd repo; git push --mirror new_remote
слід зробити трюк
Це працювало на мене бездоганно .
git clone --mirror <URL to my OLD repo location>
cd <New directory where your OLD repo was cloned>
git remote set-url origin <URL to my NEW repo location>
git push -f origin
Я маю зазначити, що це створює дзеркало вашого поточного репо, а потім підштовхує його до нового місця. Тому для великих репостів або повільних зв'язків це може зайняти деякий час .
git push --mirror origin
над -f
.
Скопіюйте його. Це дійсно так просто. :)
На стороні клієнта просто відредагуйте .git / config у локальній репортації клієнта, щоб вказати віддалені на нову URL за потребою.
Це робиться частиною в деяких інших відповідях.
git clone --mirror git@oldserver:oldproject.git
cd oldproject.git
git remote add new git@newserver:newproject.git
git push --mirror new
--mirror
у поштовху дуже важливо: це має бути правильна відповідь
git init --bare
Я просто повторюю те, що сказали інші, у простому дотриманні списку інструкцій.
Перемістіть сховище: Просто увійдіть на новий сервер, cd
у батьківський каталог, де зараз ви хочете зберігати сховище, та rsync
скопіюйте його зі старого сервера:
new.server> rsync -a -v -e ssh user@old.server.com:path/to/repository.git .
Зробіть так, щоб клієнти вказували на нове сховище: тепер для кожного клієнта, що використовує сховище, просто видаліть вказівник на старе джерело та додайте його до нового.
client> git remote rm origin
client> git remote add origin user@new.server.com:path/to/repository.git
git remote set-url origin user@new.server.com:path/to/repository.git
Подивіться цей рецепт на GitHub: https://help.github.com/articles/importing-an-external-git-repository
Я спробував ряд методів, перш ніж виявити git push --mirror
.
Працював як шарм!
git clone --mirror ...
, git remote add ...
,git push --mirror ...
Я дотримувався вказівок на BitBucket, щоб перемістити репо з усіма його гілками туди. Ось наступні кроки з поясненнями, що слідують за #
персонажем:
cd path/to/local/repo
git remote remove origin # to get rid of the old setting, this was not in the BitBucket instructions
git remote add origin ssh://git@bitbucket.org/<username>/<newrepo> # modify URL as needed
git push -u origin --all # pushes _ALL_ branches in one go
git push -u origin --tags # pushes _ALL_ tags in one go
Добре працював для мене.
Це варіант у цій відповіді , який зараз пропонує gitlab "перенести" сховище git з одного сервера на інший.
Припустимо, що ваш старий проект викликається existing_repo
, зберігається в existing_repo
папці.
Створіть репо на новому сервері. Ми припустимо, що URL нового проекту єgit@newserver:newproject.git
Відкрийте інтерфейс командного рядка та введіть наступне:
cd existing_repo
git remote rename origin old-origin
git remote add origin git@newserver:newproject.git
git push -u origin --all
git push -u origin --tags
Переваги такого підходу полягають у тому, що ви не видаляєте гілку, що відповідає вашому старому серверу.
Можна використовувати таку команду:
git remote set-url --push origin new_repo_url
Приклад з http://gitref.org/remotes/
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
origin git://github.com/github/git-reference.git (fetch)
origin git://github.com/github/git-reference.git (push)
$ git remote set-url --push origin git://github.com/pjhyett/hw.git
$ git remote -v
github git@github.com:schacon/hw.git (fetch)
github git@github.com:schacon/hw.git (push)
origin git://github.com/github/git-reference.git (fetch)
origin git://github.com/pjhyett/hw.git (push)
Повинно бути таким же простим, як:
git remote set-url origin git://new.url.here
Таким чином ви зберігаєте назву origin
для нового репо, тоді натисніть на нову репо стару, як детально описано в інших відповідях. Припустимо, що ви працюєте поодинці і у вас є місцеве репо, яке ви хочете віддзеркалити всім своїм суглобом у ньому, ви також можете (зсередини місцевого репо)
git push origin --mirror # origin points to your new repo
але див. Чи достатньо "git push --mirror" для резервного копіювання мого сховища? (усі не використовують, --mirror
але один раз).
Якщо ви хочете перейти від одного джерела до іншого, а також зберегти резервну копію свого поточного джерела на локальній машині, ви можете скористатися цими кроками:
Тепер у папці зробіть
git remote get-url origin
Наведена вище команда дає поточний URL віддаленого джерела, корисний для повернення джерела на останньому кроці
git remote set-url origin git@github.newlocation:folder/newrepo.git
Наведена вище команда встановлює віддалене походження на нове місце
git push --set-upstream origin develop
Наведена вище команда підштовхує поточну активну локальну гілку до віддаленого з розвитком імені гілки. Звичайно, вона зберігає всю історію, оскільки з git вся історія також висувається.
git remote set-url origin <original old origin>
Наведена вище команда повертає віддалене джерело до поточного джерела: ви хочете, щоб це було у вашій існуючій папці, і ви, ймовірно, не хочете змішувати своє поточне ім'я локальної папки з новою папкою, яку ви збираєтеся створити для клонування репо ви просто штовхнули на.
Сподіваюся, це допомагає,
Якщо ви хочете перемістити сховище #git з одного сервера на новий, ви можете це зробити так:
git clone OLD_REPOSITORY_PATH
cd OLD_REPOSITORY_DIR
git remote add NEW_REPOSITORY_ALIAS NEW_REPOSITORY_PATH
#check out all remote branches
for remote in `git branch -r | grep -v master `; do git checkout --track $remote ; done
git push --mirror NEW_REPOSITORY_PATH
git push NEW_REPOSITORY_ALIAS --tags
Усі віддалені гілки та теги зі старого сховища будуть скопійовані у нове сховище.
Виконання цієї команди поодинці:
git push NEW_REPOSITORY_ALIAS
буде копіювати лише головну гілку (лише гілки відстеження) у новий сховище.