Changer l'emplacement du répertoire du référentiel Git.

200

Avec Git / Github pour Windows, si j'ai un référentiel avec ce répertoire:, C:\dir1\dir2que dois-je faire pour déplacer les fichiers de dépôt C:\dir1? Je peux évidemment copier et coller physiquement les fichiers, mais que dois-je faire du côté Git?

J'ai ce dépôt sur GitHub et j'utilise Git Bash et GitHub pour Windows.

Mikael Engver
la source
1
Regardez cette réponse , c'est la même chose pour passer à un autre dossier ou un autre ordinateur.
rekenerd

Réponses:

234

Copiez simplement le contenu complet du répertoire de travail (y compris le .gitrépertoire caché ). Cela déplacera l'intégralité du répertoire de travail vers le nouveau répertoire et n'affectera pas le référentiel distant sur GitHub.

Si vous utilisez GitHub pour Windows, vous pouvez déplacer le référentiel en utilisant la méthode ci-dessus. Cependant, lorsque vous cliquez sur le référentiel dans l'application, il ne pourra pas le trouver. Pour résoudre ce problème, cliquez simplement sur le cercle bleu avec le!, Sélectionnez Rechercher, puis accédez au nouveau répertoire.

ctor
la source
3
Mais qu'en est-il de la façon dont GitHub pour Windows suit le dépôt local? Il doit y avoir une configuration à cette fin.
3
Quand je l'ai fait sous Windows, cela m'a obligé à créer un nouveau dépôt.
472084
1
@Jleagle, Ils l'ont peut-être changé depuis que cette réponse a été publiée. Je vais jeter un œil et mettre à jour ma réponse si nécessaire.
ctor
2
Il ne devrait pas vous demander de créer un nouveau dépôt: si cela se produisait, vous avez évidemment manqué un fichier git (peut-être un fichier caché). Cela m'est arrivé, et quand j'ai réessayé, j'ai remarqué que j'en avais manqué.
Juan
1
Je suis sur Win. Après avoir déplacé le dossier manuellement vers un nouvel emplacement, j'ai rouvert l'application Git GUI et déplacé manuellement le dossier du projet là-bas également. De cette façon, cela fonctionne pour moi.
kuncevic.dev
42

Je ne suis pas sûr de la question, voici donc deux réponses:

Si vous souhaitez déplacer votre référentiel:

Copiez simplement le référentiel entier (avec son .gitrépertoire).

Il n'y a pas de chemin absolu dans la .gitstructure et rien ne l'empêche d'être déplacé donc vous n'avez rien à faire après le déplacement. Tous les liens vers github (voir dans .git/config) fonctionneront comme avant.

Si vous souhaitez déplacer des fichiers à l'intérieur du référentiel:

Déplacez simplement les fichiers. Ajoutez ensuite les modifications répertoriées dans git status. Le prochain commitfera le nécessaire. Vous serez heureux d'apprendre qu'aucun fichier ne sera dupliqué: déplacer un fichier dans git est presque gratuit.

Denys Séguret
la source
1
Mais qu'en est-il de la façon dont GitHub pour Windows suit le dépôt local? Il doit y avoir une configuration à cette fin.
@ user596075 c'est dans le .gitrépertoire.
OrangeDog
24

Si vous utilisez GitHub Desktop, procédez simplement comme suit:

  1. Fermez GitHub Desktopet toutes les autres applications avec des fichiers ouverts sur votre chemin de répertoire actuel.
  2. Déplacez tout le répertoire comme mentionné ci-dessus vers le nouvel emplacement du répertoire.
  3. Ouvrez GitHub Desktopet cliquez sur l'icône bleue (!) "Référentiel introuvable". Une boîte de dialogue s'ouvrira et vous verrez un bouton "Localiser ..." qui ouvrira une fenêtre contextuelle vous permettant de diriger son chemin vers un nouvel emplacement.
Mikael Engver
la source
8

Bien que la question concerne Git pour Windows, cela semble être le meilleur résultat même lors de la recherche de Visual Studio Tools pour Git (extension dans VS 2012, prise en charge native dans VS 2013).

En utilisant les solutions ci-dessus comme guide, j'ai déterminé que Visual Studio Git Tools rend le déplacement des référentiels (ou même la structure de répertoires entière pour tous les référentiels) localement très facile.

1) Fermez Visual Studio. 2) Déplacez le ou les dossiers Repo vers un nouvel emplacement. 3) Ouvrez Visual Studio. Ouvrez Team Explorer. Passez en vue "Connect" (icône de prise en haut). 3a) Si les Repos affichent toujours l'ancien chemin, cliquez sur Actualiser pour forcer une mise à jour. 4) Les dépôts qui ont été déplacés localement ne devraient plus être affichés dans " Local Git Repositories ". 5) Cliquez sur Ajouter (pas nouveau ou clone) et sélectionnez le dossier de dépôt à ajouter.

À l'étape 5, vous fournissez simplement un chemin de recherche et la recherche inclut automatiquement tous les sous-dossiers. Si vous avez plusieurs référentiels organisés sous une même racine (référentiels indépendants ayant simplement le même dossier parent), la sélection du parent inclura tous les référentiels trouvés en dessous.

Exemple: E: \ Repos \ RepoA E: \ Repos \ RepoB E: \ Repos \ RepoC

Dans Visual Studio Team Explorer [Ajouter]> "E: \ Repos \"> [Ajouter] renverra les trois dans les référentiels locaux.

Gerald Davis
la source
6

Bien que les réponses précédentes semblent toutes dire que vous pouvez simplement déplacer le répertoire et qu'il n'y a pas de chemin absolu dans la structure .git. J'ai trouvé que c'était faux lors de l'utilisation de git de Cygwin.

Lorsque j'ai déplacé mon dépôt git (en fait, je l'ai restauré à partir d'une sauvegarde, mais sur un autre lecteur car la structure de mon lecteur a changé sur mon nouveau système). J'ai un message d'erreur comme

fatal: Invalid path '<part_of_the_original_repo_path>': No such file or directory

J'ai utilisé grep pour trouver que dans mon fichier .git / config dans la section [core] se trouve une variable worktree qui contient le chemin absolu de mon dépôt git. Changer cela a résolu le problème pour moi.

Phil Rosenberg
la source
4

J'utilise le plugin Visual Studio git, et j'ai quelques sites Web fonctionnant sur IIS que je voulais déplacer. Une manière simple qui a fonctionné pour moi:

  1. Fermez Visual Studio.

  2. Déplacez le code (y compris le dossier git, etc.)

  3. Cliquez sur le fichier de solution depuis le nouvel emplacement

Cela actualise le mappage vers le nouvel emplacement, en utilisant les fichiers git locaux existants qui ont été déplacés. Une fois de retour dans Visual Studio, ma fenêtre Team Explorer a montré les dépôts dans le nouvel emplacement.

Ben
la source
2

J'utilise Github Desktop pour Windows et je voulais déplacer l'emplacement d'un référentiel. Pas de problème si vous déplacez votre répertoire et choisissez le nouvel emplacement dans le logiciel. Mais si vous définissez un mauvais répertoire, vous obtenez une erreur fatale et aucune seconde chance de faire une relocalisation vers le bon. Donc pour réparer ça. Vous devez copier les fichiers du projet dans le mauvais répertoire, effectuer sa recomposition par Github Desktop, après cela, vous pouvez déplacer à nouveau votre projet dans un autre dossier et effectuer une relocalisation dans le logiciel. Pas besoin de fermer Github Desktop pour cela, il vérifiera les dossiers en direct.

En espérant que cela aidera quelqu'un.

Shim-Sao
la source
1

Cela n'a pas fonctionné pour moi. J'ai déplacé un dépôt de (par exemple) c: \ project1 \ vers c: \ repo \ project1 \ et Git pour Windows n'affiche aucun changement.

git status affiche une erreur car l'un des sous-modules "n'est pas un référentiel git" et montre l'ancien chemin. par exemple (les noms ont été modifiés pour protéger IP)

fatal: Pas un dépôt git: C: /project1/.git/modules/subproject/subproject2 fatal: 'git status --porcelain' a échoué dans le sous-projet de sous-module

J'ai dû modifier manuellement les fichiers .git dans les sous-modules pour pointer vers le chemin relatif correct vers le référentiel du sous-module (dans le répertoire .git / modules du référentiel principal)

Chris Oates
la source
1

Rapport du futur: avril 2018.

Je voulais normaliser mes dépôts locaux sur mon Mac et mon Windows, qui s'étaient retrouvés dans différents dossiers locaux.

Le client Windows 10 m'a fait passer par la routine "Can't Find"> "Locate", fastidieuse mais pas terrible. Vous devez également mettre à jour le «chemin de clonage» local dans les options pour une utilisation future.

Lorsque j'ai consolidé les dossiers mac, le client Github vient de les retrouver - je n'ai rien dû faire!

charles ross
la source
0

Pour définir le chemin local par défaut de vos référentiels à chaque fois que vous en clonez un, vous ne devez cloner un référentiel qu'une seule fois et définir Localpath: / votre-chemin, puis github détectera automatiquement ce chemin comme votre chemin par défaut.

BOjack
la source
Cela ne semble pas répondre à la question d'origine - peut-être pouvez-vous préciser comment votre réponse ajoute quelque chose à la réponse déjà acceptée? Merci.
rwp
0

Une approche plus basée sur Git consisterait à apporter les modifications à votre copie locale en utilisant cd ou copier et coller, puis à pousser ces modifications du référentiel local vers le référentiel distant.

Si vous essayez de vérifier l'état de votre référentiel local, il peut afficher des «modifications non suivies» qui sont en fait les fichiers déplacés. Pour pousser ces modifications avec force, vous devez mettre en scène ces fichiers / répertoires en utilisant

$ git add -A
#And commiting them
$ git commit -m "Relocating image demo files"
#And finally, push
$ git push -u local_repo -f HEAD:master

J'espère que ça aide.

Pe Dro
la source