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?
git remote rename Origin upstream
git remote add Origin URL_TO_GITHUB_REPO
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
.
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
Pour pousser votre pension existante dans différents, vous devez:
Clonez d'abord le dépôt d'origine.
git clone https://git.fedorahosted.org/cgit/rhq/rhq.git
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:
Sur le référentiel d'origine, créez et extrayez une nouvelle branche:
git checkout -b new_branch
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.
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.
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
Essayez ceci Comment déplacer un dépôt Git complet
Créez un référentiel local dans le répertoire temp-dir en utilisant:
git clone temp-dir
Allez dans le répertoire temp-dir.
Pour voir une liste des différentes branches dans ORI, faites:
git branch -a
Vérifiez toutes les branches que vous souhaitez copier d'ORI vers NEW en utilisant:
git checkout branch-name
Maintenant, récupérez toutes les balises de ORI en utilisant:
git fetch --tags
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
Désactivez maintenant le lien vers le référentiel ORI avec la commande suivante:
git remote rm Origin
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>
Maintenant, poussez toutes vos branches et étiquettes avec ces commandes:
git Push Origin --all
git Push --tags
Vous avez maintenant une copie complète de votre dépôt ORI.
J'ai trouvé une solution en utilisant set-url qui est concise et assez facile à comprendre :
cd
dans le référentiel existant sur votre machine locale (si vous ne l'avez pas encore cloné, faites-le d'abord)git remote set-url Origin https://github.com/user/example.git
git Push -u Origin master
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
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).
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