216 votes

commande de Git pour déplacer un dossier dans un autre

J’ai créé un dossier `` avec un tas de dossiers et de fichiers source

Mais je veux maintenant passer le dossier dans le dossier de sorte qu’il ressemble``

J’ai essayé de faire

1)``

2)``

mais il échoue avec cette erreur

3) j’ai essayé git mv commun / communs incluent, mais j’obtiens la même erreur

aucune idée comment faire pour y parvenir ?

196voto

Andres Jaan Tack Points 9929

Une des plus belles choses sur git est que vous n’avez pas besoin de suivre les changements de noms de fichier explicitement. Git va le comprendre en comparant le contenu des fichiers.

Donc, dans votre cas, ne fonctionnent pas si dur :

En cours d’exécution `` devrait vous montrer quelque chose comme ceci :

180voto

VonC Points 414372
 git mv common include

devrait fonctionner.

De la git mv page de man:

git mv [-f] [-n] [-k] <source> ... <destination directory>

Dans la deuxième forme, le dernier argument doit être un répertoire existant; les sources données seront placés dans ce répertoire.
L'index est mis à jour après la réussite, mais le changement doit toujours être commis.

Pas de "git add" doit être fait avant de le déplacer.


Remarque: "git mv A B/", lors de l' B n'existe pas en tant que répertoire, devrait erreur, mais il n'a pas.

Voir commettre c57f628 par Matthieu Moy (moy) pour Git 1.9/2.0 (T1 2014):

Git utilisé pour ajuster le slash de fin, et de faire la commande équivalent à 'git mv file no-such-dir', qui a créé le fichier no-such-dir (alors que le slash a explicitement indiqué qu'elle ne pouvait être qu'un répertoire).

Ce patch permet de sauter la barre oblique de suppression pour le chemin de destination.
Le chemin avec ses slash est passé à renommer(2), qui d'erreur avec le message approprié:

$ git mv file no-such-dir/
fatal: renaming 'file' failed: Not a directory

4voto

Ivan F. Points 11

Je suis désolé de ne pas avoir assez de réputation pour commenter la "réponse" de "Andres Jaan Tack".

Je pense que mon messege sera supprimé (( Mais je veux juste mettre en garde "lurscher" et d'autres qui ont eu la même erreur: veillez à faire

$ mkdir include
$ mv common include
$ git rm -r common
$ git add include/common

Il peut provoquer vous ne verrez pas l'historique de git de votre projet dans un nouveau dossier.

J'ai essayé

$ git mv oldFolderName newFolderName

eu

fatal: bad source, source=oldFolderName/somepath/__init__.py, dest
ination=ESWProj_Base/ESWProj_DebugControlsMenu/somepath/__init__.py

Je n'ai

git rm -r oldFolderName

et

git add newFolderName

et je ne vois pas l'ancien historique de git dans mon projet. Au moins, mon projet n'est pas perdu. Maintenant, j'ai mon projet en newFolderName, mais sans l'histoire (

Veux juste mettre en garde, attention les conseils d'utilisation de "Andres Jaan le clou", si vous ne voulez pas perdre votre git hsitory.

0voto

test30 Points 359

J'ai eu le même problème, mais dans le dossier que j'avais envie de bouger, j'avais des fichiers dont je n'étais pas suivi.

disons que j'avais des fichiers

a/file1
a/untracked1
b/file2
b/untracked2

Et je voulais déménager objet d'un suivi uniquement les fichiers de sous-dossier subdir, de sorte que le but était:

subdir/a/file1
subdir/a/untracked1
subdir/b/file2
subdir/b/untracked2

ce que j'avais fait était:

  • J'ai créé un nouveau dossier et déplacé tous les fichiers que j'étais intéressé à passer: mkdir tmpdir && mv a b tmpdir
  • extrait des anciens fichiers git checkout a b
  • créé de nouveaux dir et déplacé nettoyer les dossiers (sans sans traces de fichiers) à nouveau sous répertoire: mkdir subdir && mv a b subdir
  • ajouté tous les fichiers de sous répertoire (donc Git pourrait ajouter que les suivis précédemment fichiers - c'était somekind d' git add --update avec changement de répertoire truc): git add subdir (normalement, ce serait ajouter encore sans traces de fichiers, cela nécessiterait la création d' .gitignore le fichier)
  • git status montre maintenant seulement déplacé les fichiers
  • déplacé reste des fichiers à partir de tmpdir pour subdir: mv tmpdir/* subdir
  • git status semble que nous exécutée git mv :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X