2009-08-11 14 views
11

Ich habe ein Projekt mit Git, wo ich vom Master abgezweigt habe, um ein Verzeichnis umzubenennen.Git: Umbenennen eines Verzeichnisses in einem Zweig

Das Umbenennen in der Verzweigung funktioniert wie erwartet. Wenn ich zurück in den Hauptzweig verzweige, hat das Verzeichnis seinen ursprünglichen Namen, aber es gibt auch einen leeren Verzeichnisbaum mit dem Namen, an dem ich ihn in der Verzweigung geändert habe.

Ist dies das erwartete Verhalten? Fehle ich einen Schritt?
Muss ich diese leeren Verzeichnisbäume nur so löschen, wie sie angezeigt werden?

Ich weiß Git nicht leere Verzeichnisse verfolgen, und das kann ein Faktor hier sein.

Mein aktueller Workflow ist:

# 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' 

ich zu diesem Punkt zu kommen und alles ist wie erwartet:

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

Das Problem kommt, wenn ich zurück zu Master wechseln:

/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 ist ein leerer Verzeichnisbaum, also git wird es nicht verfolgen - aber es ist hässlich dort zu haben.

+0

FWIW, ich bekomme dieses Verhalten nicht mit 1.6.3.1: new_dir ist nach dem endgültigen Checkout des Masters verschwunden. Welche Version verwendest du? –

+0

Ich benutze msysgit 1.6.4 – jmohr

+0

Gibt es irgendwelche versteckten untracked. * Dateien in new_dir? –

Antwort

10

Ja, Sie können es entfernen. Sie können auch git clean -d verwenden, um das Verzeichnis zu entfernen.

+0

Danke - das ist ein nützlicher Befehl, von dem ich nicht wusste. – jmohr

1

Es ist ziemlich wahrscheinlich, dass Sie Dateien im neuen Verzeichnis versteckt haben. "ls -a newdir"