web-dev-qa-db-fra.com

Git Push repo existant vers un nouveau et différent serveur de repo distant?

Supposons que j'ai un référentiel sur git.fedorahosted.org et que je souhaite le copier dans mon compte sur github pour avoir mon propre terrain de jeu, mis à part le repo plus "officiel" de fedorahosted. Quelles seraient les étapes pour copier initialement cela? Dans github, il y a ce joli bouton "fork", mais je ne peux pas l'utiliser pour des raisons évidentes.

Et comment pourrais-je suivre les changements dans le dépôt fedorahosted dans celui github?

426
Heiko Rupp
  1. Créez un nouveau repo sur github.
  2. Clonez le dépôt de fedorahosted sur votre machine locale.
  3. git remote rename Origin upstream
  4. git remote add Origin URL_TO_GITHUB_REPO
  5. git Push Origin master

Maintenant, vous pouvez travailler avec tout comme n'importe quel autre dépôt github. Pour importer des patchs en amont, lancez simplement git pull upstream master && git Push Origin master.

665
troelskn

Il y a une réponse supprimée à cette question qui avait un lien utile: https://help.github.com/articles/duplicating-a-repository

Le Gist est

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

Exemple de l'OP:

Sur votre machine locale

$ 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
94
mob

Pour pousser votre pension existante dans différents, vous devez:

  1. Clonez d'abord le dépôt d'origine.

    git clone https://git.fedorahosted.org/cgit/rhq/rhq.git
    
  2. Poussez les sources clonées vers votre nouveau référentiel:

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

Vous pouvez changer master:master en source:destination branche.


Si vous voulez pousser un commit spécifique (branche), alors faites:

  1. Sur le référentiel d'origine, créez et extrayez une nouvelle branche:

    git checkout -b new_branch
    
  2. Choisissez et réinitialisez le point avec lequel vous voulez commencer:

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

    Vous pouvez également sélectionner le commit par git cherry-pick pour l'ajouter à HEAD existant.

  3. Ensuite, appuyez sur votre nouveau dépôt:

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

    Si vous rebasez, utilisez -f pour forcer (non recommandé). Exécutez git reflog pour voir l'historique des modifications.

37
kenorb

Voulez-vous vraiment pousser simplement votre référentiel local (avec ses branches locales, etc.) sur la nouvelle télécommande ou voulez-vous vraiment mettre en miroir l'ancienne télécommande (avec toutes ses branches, balises, etc.) sur la nouvelle télécommande? Si ce dernier est un excellent blog sur Comment mettre correctement en miroir un dépôt git .

Je vous encourage fortement à lire le blog pour des détails très importants, mais la version courte est la suivante:

Dans un nouveau répertoire, exécutez ces commandes:

git clone --mirror [email protected]/upstream-repository.git
cd upstream-repository.git
git Push --mirror [email protected]/new-location.git
13
HairOfTheDog

Essayez ceci Comment déplacer un dépôt Git complet

  1. Créez un référentiel local dans le répertoire temp-dir en utilisant:

    git clone temp-dir

  2. Allez dans le répertoire temp-dir.

  3. Pour voir une liste des différentes branches dans ORI, faites:

    git branch -a
    
  4. Vérifiez toutes les branches que vous souhaitez copier d'ORI vers NEW en utilisant:

    git checkout branch-name
    
  5. Maintenant, récupérez toutes les balises de ORI en utilisant:

    git fetch --tags
    
  6. Avant de passer à l'étape suivante, assurez-vous de vérifier vos étiquettes et branches locales à l'aide des commandes suivantes:

    git tag
    
    
    git branch -a
    
  7. Désactivez maintenant le lien vers le référentiel ORI avec la commande suivante:

    git remote rm Origin
    
  8. Maintenant, liez votre référentiel local à votre nouveau référentiel créé à l'aide de la commande suivante:

    git remote add Origin <url to NEW repo>
    
  9. Maintenant, poussez toutes vos branches et étiquettes avec ces commandes:

    git Push Origin --all
    
    
    git Push --tags
    
  10. Vous avez maintenant une copie complète de votre dépôt ORI.

10
vm345

J'ai trouvé une solution en utilisant set-url qui est concise et assez facile à comprendre :

  1. créer un nouveau repo sur Github
  2. cd dans le référentiel existant sur votre machine locale (si vous ne l'avez pas encore cloné, faites-le d'abord)
  3. git remote set-url Origin https://github.com/user/example.git
  4. git Push -u Origin master
7
Mobiletainment

Si vous avez un référentiel Git existant:

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
5
Kamil Nekanowicz

J'ai eu le même problème.

Dans mon cas, puisque j'ai le référentiel d'origine sur ma machine locale, j'ai fait une copie dans un nouveau dossier sans fichier caché (.git, .gitignore).

Enfin, j'ai ajouté le fichier .gitignore au nouveau dossier créé.

Ensuite, j'ai créé et ajouté le nouveau référentiel à partir du chemin local (dans mon cas, avec GitHub Desktop).

2
itrascastro

Pointez simplement le nouveau dépôt en modifiant l'URL du dépôt GIT avec cette commande:

git remote set-url Origin [new repo URL]

Exemple: git remote set-url Origin [email protected]:Batman/batmanRepoName.git

Maintenant, pousser et tirer sont liés au nouveau REPO.

Ensuite, poussez normalement comme ceci:

git Push -u Origin master
2
Abdel Ourimchi