2009-08-11 9 views
11

J'ai un projet en utilisant Git où j'ai dérivé de master pour renommer un répertoire.Git: renommer un répertoire dans une branche

Le changement de nom dans la branche fonctionne comme prévu. Quand je repasse à la branche master, le répertoire a son nom d'origine, mais il y a aussi une arborescence de répertoires vide avec le nom que j'ai changé dans la branche.

Est-ce le comportement attendu? Ai-je manqué une étape?
Ai-je juste besoin de supprimer ces arborescences de répertoires vides lorsqu'elles apparaissent?

Je sais que Git ne suit pas les répertoires vides et cela peut être un facteur ici.

Mon flux de travail actuel est:

# create and checkout a branch from master 
/projects/demo (master) 
$ git checkout -b rename_dir 

# update paths in any affected files 

# perform the rename 
/projects/demo (rename_dir) 
$ git mv old_dir new_dir 

# add the modified files 
/projects/demo (rename_dir) 
$ git add -u 

# commit the changes 
/projects/demo (rename_dir) 
$ git commit -m 'Rename old_dir to new_dir' 

je reçois à ce point et tout est comme prévu:

# old_dir has been renamed new_dir 
/projects/demo (rename_dir) 
$ ls 
new_dir 

Le problème vient quand je reviens au maître:

/projects/demo (rename_dir) 
$ git checkout master 

# master contains old_dir as expected but it also 
# includes the empty directory tree for new_dir 
/projects/demo (master) 
$ ls 
old_dir new_dir 

new_dir est un arbre de répertoire vide, donc git ne le suivra pas - mais c'est moche d'y être.

+0

FWIW, je n'obtiens pas ce comportement avec 1.6.3.1: new_dir a disparu après la dernière vérification de master. Quelle version utilisez-vous? –

+0

J'utilise msysgit 1.6.4 – jmohr

+0

Y a-t-il des fichiers. * Non cachés dans new_dir? –

Répondre

10

Oui, vous pouvez le supprimer. Vous pouvez également utiliser git clean -d pour supprimer le répertoire.

+0

Merci - c'est une commande utile dont je n'étais pas au courant. – jmohr

1

Il est probable que vous ayez des fichiers cachés dans le nouveau répertoire. "ls -a newdir"

Questions connexes