2010-06-10 4 views
49

У меня есть проект в Github, но теперь я купил план с Dreamhost, который включает в себя доступ к оболочке и Git.Оставив Github, как изменить происхождение Git repo?

 Github [Origin] 
    /  \ 
    pull/   \pull 
    /push  push\ 
    /    \ 
Laptop   Dreamhost 
(cloned)   (cloned) 

Я хотел бы удалить свое репо из Github и начать прямо на DH.

Как изменить происхождение в моем Ноутбуке, и следует ли мне удалить происхождение в Dreamhost?

ответ

119
git remote rename origin github 
git remote add origin <DreamHost-git-URL> 
# test and make sure the DreamHost origin works properly for fetch and push 
git remote rm github 

Я предпочитаю использовать команду «git remote» вместо того, чтобы вручную вставлять файл .git/config.

+3

Согласен. Я рассматриваю формат '.git/config' детали реализации, I * всегда * использую такие инструменты, как' git remote' и 'git config', чтобы убедиться, что я не испортил синтаксис. –

+1

О, +1, потому что мне это нравится. Но вы должны добавить дополнительную информацию о том, как переносить ветки отслеживания потом ... – hurikhan77

+2

Мне пришлось добавить 'git config branch.master.remote origin'. Кажется, что git изменил эту переменную как побочный эффект удаленного переименования. –

28

Самый простой способ - отредактировать ваш файл .git/config на вашем ноутбуке. Просто найдите свой адрес github и замените его на DreamHost. Убедитесь, что ваш открытый ключ ssh установлен на Dreamhost. Теперь вы можете нажать оригинал оригинала, и вы заселите свой репозиторий Dreamhost.

Вы можете удалить происхождение на Dreamhost, но в этом нет необходимости.

Кроме того, убедитесь, что в репозитории имеется голое место. По умолчанию вы не можете нажать на не-голые репозитории.

+0

Ну, как вы сказали, это не-голый репо, я немного смущен. Что делать сейчас ? –

+0

Найдено: http://stackoverflow.com/questions/1784506/when-creating-a-git-repository-that-will-be-on-the-server-can-i-convert-it-to-a –

+0

Как указано выше , все, что вам нужно, это опция -bare при клонировании того, что должно быть репозиторией восходящего потока. –

4

Самый простой способ - отредактировать файл .git/config, в котором перечислены источники происхождения. Вы можете протестировать его, запустив git fetch

Вы можете удалить удаленные ссылки со стороны Dreamhost, если хотите, в том же файле.

51

Самый простой способ:

$ git config remote.origin.url <Dreamhost-git-URL> 

Вы показываете пультов после этого:

$ git remote -v 
origin Dreamhost-git-URL (fetch) 
origin Dreamhost-git-URL (push) 
+2

Я думаю, что это решение выглядит намного проще, чем ответ 50+ ... – Thomas

+0

Да, кажется лучшим решением. – Profpatsch

+0

Я не думаю, что это решение существовало в выпущенных версиях git в то время, когда я написал свой ответ, но это определенно кажется более простым. :) – clee

24

Лучше всего в git remote set-url origin <new-url>

+1

этот комментарий должен быть сверху. единственный однострочный, который не зависит от внутренней конфигурации git. –

+0

Согласен, я думаю, что это лучший ответ. Это просто и делает то, что вам нужно в одной строке. – imns

2

почему не просто:

git remote remove origin 

git remote add origin <Dreamhost-git-URL> 

git push -u origin --all 
+0

Я создал пустое хранилище на github. В локальной настройке я клонировал из репозитория, затем добавил некоторые файлы и нажал на репозиторий github. Затем я создал новый репозиторий на gitlab и импортировал код из репозитория github. Теперь я хочу изменить ссылку удаленного репозитория моего локального репозитория на этот репозиторий gitlab. Я сделал git remote add origin 'в моем локальном репозитории. У меня не было никакой ошибки (я должен получить какой-то результат? Я тоже не получил сообщение об успешности). Но теперь я не могу видеть изменения, внесенные в репозиторий gitlab на моем местном. –

Смежные вопросы