Déplacement d’un repository git

Cette question est peut-être stupide, mais je me le demande depuis un moment. Il s’agit de référentiels git, mais je suppose que c’est la même chose pour les référentiels locaux pour les autres DVCS.

Disons que mon projet est comme ça quand il démarre:

  • Projet
    • .git
    • tous les autres dossiers du projet

Alors, c’est comme ça que ça fonctionnerait quand vous le configureriez correctement?

Disons que je déplace le dossier du projet ailleurs, est-ce que je devrais changer quelque chose? Ou est-ce que tous les éléments du référentiel dans le dossier .git sont uniquement liés au dossier du projet en ignorant la totalité de l’arborescence des fichiers au-dessus de Project.

Je suis presque sûr que le fait de déménager n’aurait pas d’importance, mais je voulais juste m’assurer.

Oui, tout en .git est relatif. Si vous avez ajouté le référentiel en tant que télécommande nommée à un autre référentiel, vous devrez toutefois modifier l’URL distante dans cet autre référentiel.

J’ai trouvé que les sous-modules ne sont pas relatifs entre eux.

Donc, si vous voulez déplacer un projet contenant des sous-modules, vous devez éditer le fichier .git dans le sous-module, ainsi que l’atsortingbut “worktree” dans le fichier de configuration du sous-module, qui est stocké dans le .git/modules/MODULENAME/config .

Afficher la télécommande actuelle (étape facultative bien sûr):

 $ git remote show origin * remote origin URL: git@oldserver:project.git Remote branch(es) merged with 'git pull' while on branch master master Tracked remote twigs master 

Ce que nous devons faire est de supprimer l’origine actuelle et d’en append une nouvelle:

 $ git remote rm origin $ git remote add origin git@newserver:project.git $ git remote show origin * remote origin URL: git@newserver:project.git Remote branch(es) merged with 'git pull' while on branch master master error: refs/remotes/origin/HEAD points nowhere! New remote twigs (next fetch will store in remotes/origin) master 

Ne vous inquiétez pas de l’erreur affichée par la dernière commande. Le premier tirage de l’origine le réparera:

 $ git pull From git@newserver:project.git * [new branch] master -> origin/master Already up-to-date. $ git remote show origin * remote origin URL: git@newserver:project.git Remote branch(es) merged with 'git pull' while on branch master master Tracked remote twigs master 

Je suis toujours frais avec Git alors peut-être que c’est une meilleure façon de le faire mais ça a fonctionné pour moi.

Non, tu n’aurais rien à changer. C’est

  • en supposant qu’aucun script ne règle directement GIT_DIR, GIT_WORKTREE ou GIT_INDEX (improbable)
  • vous n’avez aucun référentiel externe pointant vers cette copie

    • si vous le faites, vous devrez les repoint en utilisant

       git remote set-url [--push] origin user@yourhost:/home/user/newlocation/Project 

(l’origine doit être le nom de la télécommande; l’origine est le nom par défaut lors du clonage depuis un repo distant)

Vous pouvez déplacer le répertoire git d’une machine vers une autre ou dire que vous souhaitez migrer votre dossier de projet.

Toutes les informations sur l’origine sont stockées dans le dossier ‘.git’, créé lors de l’initialisation d’un référentiel git sous un répertoire de votre système.

Procédure

  1. : Déplacez le dossier du projet vers un autre emplacement.
  2. : Si le dossier du projet est déplacé sur une nouvelle machine, créez la paire de clés SSH correspondante.
  3. : Dites à qui vous utilisez: git config –global user.email “your_git_email_id @ youremail”