2009-08-11 17 views
11

Mam projekt przy użyciu Git, w którym rozgałęziłem master, aby zmienić nazwę katalogu.Git: Zmienianie nazwy katalogu w oddziale

Zmiana nazwy w oddziale działa zgodnie z oczekiwaniami. Kiedy przełączam się z powrotem do głównej gałęzi, katalog ma swoją oryginalną nazwę, ale jest też puste drzewo katalogów z nazwą, którą zmieniłem w gałęzi.

Czy to oczekiwane zachowanie? Czy brakuje mi kroku?
Czy po prostu trzeba usunąć te puste drzewa katalogów, które się pojawiają?

Wiem, że Git nie śledzi pustych katalogów i to może mieć tutaj znaczenie.

Mój obecny pracy jest:

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

mogę dostać się do tego punktu i wszystko jest zgodnie z oczekiwaniami:

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

Problem pojawia się, gdy mogę przełączyć z powrotem do Master:

/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 to puste drzewo katalogów, więc git go nie śledzi - ale jest brzydkie.

+0

FWIW, nie dostaję takiego zachowania w wersji 1.6.3.1: new_dir zniknął po ostatecznej realizacji master. Jakiej wersji używasz? –

+0

Używam msysgit 1.6.4 – jmohr

+0

Czy są jakieś ukryte niepoprawione pliki. * W new_dir? –

Odpowiedz

10

Tak, można go usunąć. Możesz również użyć git clean -d, aby usunąć katalog.

+0

Dzięki - to przydatne polecenie, którego nie znałem. – jmohr

1

Jest raczej prawdopodobne, że masz ukryte pliki w nowym katalogu. "ls -a newdir"

Powiązane problemy