Comment changer l'URI (URL) pour un référentiel Git distant?


3900

J'ai un dépôt (origine) sur une clé USB que j'ai cloné sur mon disque dur (local). J'ai déplacé «origine» vers un NAS et testé avec succès le clonage à partir d'ici.

Je voudrais savoir si je peux changer l'URI d '"origine" dans les paramètres de "local" afin qu'il tire maintenant du NAS, et non de la clé USB.

Pour l'instant, je peux voir deux solutions:

  • poussez tout sur l'USB-orign, et copiez-le à nouveau sur le NAS (implique beaucoup de travail en raison de nouveaux commits vers nas-origin);

  • ajoutez une nouvelle télécommande à "local" et supprimez l'ancienne (je crains de casser mon historique).


6
J'ai dû le faire sur une ancienne version de git (1.5.6.5) et l'option set-url n'existait pas. La simple suppression de la télécommande indésirable et l'ajout d'une nouvelle avec le même nom a fonctionné sans problème et l'historique est très bien conservé.
HotN

dans mon cas, je dois vérifier ma permission, j'ai deux référentiels git privés et ce deuxième compte est l'administrateur de ce nouveau dépôt et le premier est mon compte d'utilisateur par défaut et je devrais accorder la permission au premier
saber tabatabaee yazdi

Réponses:


6338

Vous pouvez

git remote set-url origin new.git.url/here

(voir git help remote) ou vous pouvez simplement y modifier .git/configet modifier les URL. Vous n'êtes pas en danger de perdre votre histoire à moins que vous ne fassiez quelque chose de très stupide (et si vous êtes inquiet, faites simplement une copie de votre repo, car votre repo est votre histoire.)


29
Si vous avez un utilisateur shell différent, vous pouvez peut-être spécifier votre utilisateur git au début de la nouvelle URL, par exemple:myself@git://new.url.here
sobi3ch

13
Vous pouvez également définir la branche amont de maître pour votre nouvel emplacement d'origine avec: git branch -u origin/master. Cela vous permettra de simplement git pushau lieu d'avoir à git push origin masterchaque fois.
kelorek

32
@kelorek ou vous pouvez juste git push -u origin masterla première fois :)
hobbs

26
Je devais aussi le faire git remote set-url --push origin git://...afin de définir l'origine ... (push) url.
jpillora

3
Pour plusieurs branches, vous pouvez utiliser git push -u --allpour pousser toutes les branches à la fois vers une nouvelle URL (au lieu de git push -u origin master)
Ben

902
git remote -v
# View existing remotes
# origin  https://github.com/user/repo.git (fetch)
# origin  https://github.com/user/repo.git (push)

git remote set-url origin https://github.com/user/repo2.git
# Change the 'origin' remote's URL

git remote -v
# Verify new remote URL
# origin  https://github.com/user/repo2.git (fetch)
# origin  https://github.com/user/repo2.git (push)

Changer l'URL d'une télécommande


101

Changer d'hôte pour un serveur Git Origin

à partir de: http://pseudofish.com/blog/2010/06/28/change-host-for-a-git-origin-server/

J'espère que ce n'est pas quelque chose que vous devez faire. Le serveur que j'ai utilisé pour collaborer sur quelques projets git avec le nom de domaine a expiré. Cela signifiait trouver un moyen de migrer les référentiels locaux pour revenir en synchronisation.

Mise à jour: Merci à @mawolf pour avoir souligné qu'il existe un moyen simple avec les versions récentes de git (après février 2010):

git remote set-url origin ssh://newhost.com/usr/local/gitroot/myproject.git

Voir la page de manuel pour plus de détails.

Si vous utilisez une ancienne version, essayez ceci:

À titre de mise en garde, cela ne fonctionne que car il s'agit du même serveur, uniquement avec des noms différents.

En supposant que le nouveau nom d'hôte est newhost.com, et l'ancien était oldhost.com, le changement est assez simple.

Modifiez le .git/configfichier dans votre répertoire de travail. Vous devriez voir quelque chose comme:

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = ssh://oldhost.com/usr/local/gitroot/myproject.git

Passez oldhost.comà newhost.com, enregistrez le fichier et vous avez terminé.

D'après mes tests limités ( git pull origin; git push origin; gitx), tout semble en ordre. Et oui, je sais que c'est une mauvaise forme de jouer avec les internes de git.


Mauvaise forme? Peut-être. Mais si vous devez faire quelque chose que les auteurs ne s'attendaient pas à ce que quiconque ait besoin de faire, il est parfois nécessaire de jouer avec les internes. Mais vous devez être prêt à accepter les conséquences si vous vous trompez. Backup your local repository _before_ messing with git internals.
Jesse Chisholm

56
git remote set-url origin git://new.location

(vous pouvez également ouvrir .git/config, rechercher [remote "origin"]et modifier la url =ligne.

Vous pouvez vérifier que cela fonctionne en examinant les télécommandes:

git remote -v
# origin  git://new.location (fetch)
# origin  git://new.location (push)

La prochaine fois que vous pousserez, vous devrez spécifier la nouvelle branche en amont, par exemple:

git push -u origin master

Voir aussi: GitHub: Changer l'URL d'une télécommande


Je n'ai pas pu définir la nouvelle origine en modifiant .git / config. Il a déclaré que le référentiel git nommé dans l'URL n'était pas un référentiel git. Une fois que j'ai supprimé et recréé l'origine, tout allait bien. Cependant, je n'avais pas recherché git remote set-url comme solution à mon problème.
octopusgrabbus du

+1 pour avoir fourni une réponse complète avec la git push -ucommande. Peut-être évident pour les autres, ce n'était pas pour moi.
testphreak

37

Changer d'URL distantes

Ouvrez le terminal.

Première étape: - Changez le répertoire de travail actuel en votre projet local.

2ème étape: - Listez vos télécommandes existantes afin d'obtenir le nom de la télécommande que vous souhaitez changer.

git remote -v

origin  https://github.com/USERNAME/REPOSITORY.git (fetch)

origin  https://github.com/USERNAME/REPOSITORY.git (push)

Changez l'URL de votre télécommande de HTTPS en SSH avec la commande git remote set-url.

3e étape: - git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

4ème étape: - Vérifiez maintenant que l'URL distante a changé.

git remote -v Vérifier la nouvelle URL distante

origin  git@github.com:USERNAME/REPOSITORY.git (fetch)
origin  git@github.com:USERNAME/REPOSITORY.git (push)

Devez-vous supprimer l'ancienne origine avant d'ajouter la nouvelle origine?
Sledge

Je n'ai rien retiré du projet. Je fais simplement les étapes ci-dessus et cela a fonctionné
VIKAS KOHLI

27
  1. supprimer l'origine à l'aide de la commande sur gitbash git remote rm origin
  2. Et maintenant, ajoutez une nouvelle origine à l'aide de gitbash git remote add origin (Copiez l'URL HTTP de votre référentiel de projet dans le compartiment de bits) fait

C'est une réponse vraiment utile car sans git remote rm origingit se souvient des détails sur l'ancienne origine.
mato

Ce qui précède git remote rm originrésout le problème des télécommandes multiples: problème où je n'ai pas pu définir l'URL à distance. remote.origin.url has multiple values fatal: could not set 'remote.origin.url'
bitsand

21

git remote set-url {nom} {url}

ex) git remote set-url origin https://github.com/myName/GitTest.git


19

Écrivez la commande ci-dessous depuis votre terminal de dépôt:

git remote set-url origin git@github.com:<username>/<repo>.git

Reportez - vous à ce lien pour plus de détails sur la modification de l'URL dans la télécommande.


1
Le lien a été utile
ANP

16

si vous avez cloné votre section locale consistera automatiquement,

URL distante où il est cloné.

vous pouvez le vérifier en utilisant git remote -v

si vous voulez y apporter des changements,

git remote set-url origin https://github.io/my_repo.git

ici,

origine - votre succursale

si vous voulez écraser la branche existante, vous pouvez toujours l'utiliser .. elle remplacera votre existante ... elle le fera,

git remote remove url
and 
git remote add origin url

pour vous...


J'ai eu plusieurs télécommandes ajoutées, donc la git remote rm origincommande était nécessaire pour supprimer toutes les URL associées. Ensuite, la commande add a fonctionné.
bitsand

14

Pour vérifier la connexion à distance git:

git remote -v

Maintenant, définissez le référentiel local sur git distant:

git remote set-url origin https://NewRepoLink.git

Maintenant, pour le faire en amont ou pousser, utilisez le code suivant:

git push --set-upstream origin master -f


1
Je poussais et pourtant github n'a pas montré ma nouvelle branche. Ce dernier l'a --set-upstreamfait fonctionner.
OoDeLally du

12

Vous avez plusieurs façons de le faire:

Console

git remote set-url origin [Here new url] 

Assurez-vous simplement que vous l'avez ouvert dans un endroit où se trouve un référentiel.

Config

Il est placé dans .git / config (même dossier que le référentiel)

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = [Here new url]  <------------------------------------
...

TortoiseGit

Étape 1 - Ouvrez les paramètres

Étape 2 - Modifier l'URL

Ensuite, modifiez simplement l'URL.

SourceTree

  1. Cliquez sur le bouton "Paramètres" de la barre d'outils pour ouvrir la fenêtre Paramètres du référentiel.

  2. Cliquez sur "Ajouter" pour ajouter un chemin de référentiel distant au référentiel. Une fenêtre "Détails à distance" s'ouvrira.

  3. Saisissez un nom pour le chemin d'accès distant.

  4. Entrez l'URL / le chemin du référentiel distant

  5. Entrez le nom d'utilisateur du service d'hébergement pour le référentiel distant.

  6. Cliquez sur 'OK' pour ajouter le chemin d'accès distant.

  7. De retour dans la fenêtre Paramètres du référentiel, cliquez sur «OK». Le nouveau chemin d'accès distant doit être ajouté sur le référentiel maintenant.

  8. Si vous devez modifier un chemin d'accès distant déjà ajouté, cliquez simplement sur le bouton "Modifier". Vous devez être dirigé vers la fenêtre "Détails distants" où vous pouvez modifier les détails (URL / Chemin / Type d'hôte) du chemin distant.

  9. Pour supprimer un chemin de référentiel distant, cliquez sur le bouton «Supprimer»

entrez la description de l'image ici

entrez la description de l'image ici

réf. Soutien


11

Remplacez l'URI git distant par git@github.complutôt quehttps://github.com

git remote set-url origin git@github.com:<username>/<repo>.git

Exemple:

git remote set-url origin git@github.com:Chetabahana/my_repo_name.git

L'avantage est que vous pouvez le faire git pushautomatiquement lorsque vous utilisez ssh-agent :

#!/bin/bash

# Check ssh connection
ssh-add -l &>/dev/null
[[ "$?" == 2 ]] && eval `ssh-agent`
ssh-add -l &>/dev/null
[[ "$?" == 1 ]] && expect $HOME/.ssh/agent

# Send git commands to push
git add . && git commit -m "your commit" && git push -u origin master

Mettez un fichier script $HOME/.ssh/agentpour le laisser s'exécuter en ssh-addutilisant attend comme ci-dessous:

#!/usr/bin/expect -f
set HOME $env(HOME)
spawn ssh-add $HOME/.ssh/id_rsa
expect "Enter passphrase for $HOME/.ssh/id_rsa:"
send "<my_passphrase>\n";
expect "Identity added: $HOME/.ssh/id_rsa ($HOME/.ssh/id_rsa)"
interact

10

Dans le Git Bash, entrez la commande:

git remote set-url origin https://NewRepoLink.git

Entrez les informations d'identification

Terminé



9
$ git remote rm origin
$ git remote add origin git@github.com:aplikacjainfo/proj1.git
$ git config master.remote origin
$ git config master.merge refs/heads/master

8
Lorsque vous ajoutez une réponse à une question de dix ans avec vingt et une autres réponses, il est vraiment important d'inclure une explication de votre réponse et de souligner le nouvel aspect de la question que votre réponse aborde. Avec des réponses qui sont une série de commandes, il est utile d'expliquer ce que chacune fait et comment annuler les effets de chacune d'elles si cela est possible. L'annulation est importante dans le cas où quelqu'un est en mesure d'effectuer les premières étapes, mais rencontre ensuite une erreur lors d'une étape ultérieure.
Jason Aller

@JasonAller Je pense que c'est assez explicite et que c'est de loin la meilleure réponse, les autres sont une blague.
Oliver Dixon

7

Si vous utilisez TortoiseGit, suivez les étapes ci-dessous:

  1. Accédez à votre dossier de paiement local et cliquez avec le bouton droit pour accéder à TortoiseGit -> Settings
  2. Dans le volet gauche, choisissez Git -> Remote
  3. Dans le volet droit, choisissez origin
  4. Maintenant, changez la URLvaleur de la zone de texte à l'endroit où se trouve votre nouveau référentiel distant

Votre succursale et tous vos commits locaux resteront intacts et vous pourrez continuer à travailler comme avant.



3

Pour changer la télécommande en amont: git remote set-url origin <url>


Pour ajouter plus d'amont: git remote add newplace <url>

Vous pouvez donc choisir où travailler git push origin <branch>ougit push newplace <branch>


1
Je n'ai pas pu trouver d'autres mentions de travailler dans plusieurs amonts.
Anderson Cossul

2

Vous pouvez modifier l'URL en modifiant le fichier de configuration. Accédez à la racine de votre projet:

nano .git/config

Modifiez ensuite le champ URL et définissez votre nouvelle URL. Enregistrez les modifications. Vous pouvez vérifier les modifications à l'aide de la commande.

git remote -v 

1

Pour ceux qui souhaitent apporter cette modification à partir de Visual Studio 2019

Ouvrez Team Explorer (Ctrl + M)

Accueil -> Paramètres

Git -> Paramètres du référentiel

Télécommandes -> Modifier

entrez la description de l'image ici


1

Si votre référentiel est privé,

  1. Ouvrez le Panneau de configuration à partir du menu Démarrer
  2. Sélectionnez les comptes d'utilisateurs
  3. Sélectionnez "Gérer vos informations d'identification" dans le menu de gauche
  4. Supprimer toutes les informations d'identification liées à Git ou GitHub

Référence


1

vérifiez votre privilège

dans mon cas, je dois vérifier mon nom d'utilisateur

j'ai deux ou trois référentiels avec des informations d'identification distinctes.

le problème est ma permission j'ai deux serveurs git privés et référentiels

ce deuxième compte est l'administrateur de ce nouveau dépôt et le premier est mon compte d'utilisateur par défaut et je devrais accorder la permission au premier


0

Supprimer une télécommande

Utilisez la commande git remote rm pour supprimer une URL distante de votre référentiel.

    $ git remote -v
    # View current remotes
    > origin  https://github.com/OWNER/REPOSITORY.git (fetch)
    > origin  https://github.com/OWNER/REPOSITORY.git (push)
    > destination  https://github.com/FORKER/REPOSITORY.git (fetch)
    > destination  https://github.com/FORKER/REPOSITORY.git (push)

    $ git remote rm destination
    # Remove remote
    $ git remote -v
    # Verify it's gone
    > origin  https://github.com/OWNER/REPOSITORY.git (fetch)
    > origin  https://github.com/OWNER/REPOSITORY.git (push)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.