Git подтолкнуть существующего репо на новый и другой удаленный сервер репо? - PullRequest
418 голосов
/ 03 марта 2011

Скажем, у меня есть репозиторий на git.fedorahosted.org , и я хочу клонировать это в свой аккаунт на github, чтобы иметь собственную игровую площадку помимо более "официального" репо на fedorahosted.Каковы были бы шаги, чтобы первоначально скопировать это?В github есть эта хорошая кнопка "fork", но я не могу использовать ее по понятным причинам.

И как бы я отслеживал изменения в репозитории fedorahosted в github?

Ответы [ 9 ]

658 голосов
/ 03 марта 2011
  1. Создание нового репо на github.
  2. Клонируйте репозиторий из fedorahosted на локальный компьютер.
  3. git remote rename origin upstream
  4. git remote add origin URL_TO_GITHUB_REPO
  5. git push origin master

Теперь вы можете работать с ним, как и с любым другим репозиторием на github. Чтобы извлечь патчи из апстрима, просто запустите git pull upstream master && git push origin master.

92 голосов
/ 12 сентября 2013

На этот вопрос есть удаленный ответ с полезной ссылкой: https://help.github.com/articles/duplicating-a-repository

Суть:

0. create the new empty repository (say, on github)
1. make a bare clone of the repository in some temporary location
2. change to the temporary location
3. perform a mirror-push to the new repository
4. change to another location and delete the temporary location

Пример OP:

В вашем локальномстанок

$ cd $HOME
$ git clone --bare https://git.fedorahosted.org/the/path/to/my_repo.git
$ cd my_repo.git
$ git push --mirror https://github.com/my_username/my_repo.git
$ cd ..
$ rm -rf my_repo.git
37 голосов
/ 21 октября 2014

Чтобы перенести существующее репо в другое, вам необходимо:

  1. Сначала клонируйте исходное репо.

    git clone https://git.fedorahosted.org/cgit/rhq/rhq.git
    
  2. Перенесите клонированные источники в ваш новый репозиторий:

    cd rhq
    git push https://github.com/user/example master:master
    

Вы можете изменить master:master на source:destination ветвь.


Если вы хотите выдвинуть определенный коммит (ветвь), то выполните:

  1. В исходном репо создайте и оформите новую ветку:

    git checkout -b new_branch
    
  2. Выберите и сбросьте точку, с которой вы хотите начать:

    git log # Find the interesting hash
    git reset 4b62bdc9087bf33cc01d0462bf16bbf396369c81 --hard
    

    В качестве альтернативы выберите коммит с помощью git cherry-pick для добавления в существующую HEAD.

  3. Затем нажмите на ваш новый репо:

    git push https://github.com/user/example new_branch:master
    

    Если вы перебираете, используйте -f для принудительного толчка (не рекомендуется). Запустите git reflog, чтобы просмотреть историю изменений.

13 голосов
/ 19 августа 2015

Вы действительно хотите просто перенести свой локальный репозиторий (с его локальными ветвями и т. Д.) На новый пульт или вы действительно хотите отразить старый пульт (со всеми его ветвями, тегами и т. Д.) На новом пульте? ? Если последнее, вот отличный блог на Как правильно отразить git-репозиторий .

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

В новом каталоге запустите эти команды:

git clone --mirror git@example.com/upstream-repository.git
cd upstream-repository.git
git push --mirror git@example.com/new-location.git
9 голосов
/ 21 февраля 2017

Попробуйте это Как переместить полный репозиторий Git

  1. Создать локальный репозиторий в каталоге temp-dir, используя:

    git clonetemp-dir

  2. Перейдите в каталог temp-dir.

  3. Чтобы увидеть список различных ветвей в ORI, выполните:

    git branch -a
    
  4. Извлечь все ветви, которые вы хотите скопировать из ORI в NEW, используя:

    git checkout branch-name
    
  5. Теперь выберите все теги из ORI, используя:

    git fetch --tags
    
  6. Перед выполнением следующего шага обязательно проверьте локальные теги и ветви, используя следующие команды:

    git tag
    
    
    git branch -a
    
  7. Теперь очистите ссылку на репозиторий ORI с помощью следующей команды:

    git remote rm origin
    
  8. Теперь свяжите свой локальный репозиторий с новым созданным репозиторием, используя следующую команду:

    git remote add origin <url to NEW repo>
    
  9. Теперь добавьте все свои ветви и теги с помощью этих команд:

    git push origin --all
    
    
    git push --tags
    
  10. Теперь у вас есть полная копия из вашего ORIрепо.

7 голосов
/ 28 марта 2018

Я нашел решение, используя set-url , который лаконичен и довольно прост для понимания :

  1. создать новый репо на Github
  2. cd в существующий репозиторий на вашем локальном компьютере (если вы еще не клонировали его, сделайте это сначала)
  3. git remote set-url origin https://github.com/user/example.git
  4. git push -u origin master
4 голосов
/ 28 августа 2018

Если у вас есть существующее хранилище Git:

cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.com/newproject
git push -u origin --all
git push -u origin --tags
2 голосов
/ 27 декабря 2015

У меня была такая же проблема.

В моем случае, поскольку у меня есть локальный репозиторий на моем локальном компьютере, я сделал копию в новой папке без каких-либо скрытых файлов (.git, .gitignore).

Наконец, я добавил файл .gitignore в новую созданную папку.

Затем я создал и добавил новый репозиторий с локального пути (в моем случае это GitHub Desktop).

1 голос
/ 29 апреля 2019

Просто укажите новый репо, изменив URL репозитория GIT с помощью этой команды:

git remote set-url origin [new repo URL]

Пример: git remote set-url origin git@bitbucket.org:Batman/batmanRepoName.git

Теперь, толкание и вытягивание связаны с новым РЕПО.

Затем нажмите как обычно:

git push -u origin master
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...