2009-08-11 4 views
11

У меня есть проект с использованием Git, где я разветвил мастер, чтобы переименовать каталог.Git: Переименование каталога в ветке

Переименование в филиале работает должным образом. Когда я переключусь назад на главную ветвь, каталог имеет свое первоначальное имя, но есть также пустое дерево каталогов с именем, которое я изменил на него в ветке.

Является ли это ожидаемым поведением? Я пропустил шаг?
Нужно ли просто удалить эти пустые деревья каталогов по мере их появления?

Я знаю, что Git не отслеживает пустые каталоги, и это может быть фактором здесь.

Мой текущий рабочий процесс:

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

я добраться до этой точки, и все, как и ожидалось:

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

Проблема возникает, когда я переключаюсь обратно к хозяину:

/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 - это пустое дерево каталогов, поэтому git не будет отслеживать его, но это некрасиво.

+0

FWIW, я не получаю такого поведения с 1.6.3.1: new_dir исчез после окончательной проверки мастера. Какую версию вы используете? –

+0

Я использую msysgit 1.6.4 – jmohr

+0

Есть ли скрытые неиспользуемые. * Файлы в new_dir? –

ответ

10

Да, вы можете удалить его. Вы также можете использовать git clean -d для удаления каталога.

+0

Спасибо - это полезная команда, о которой я не знал. – jmohr

1

Скорее всего, у вас есть скрытые файлы в новом каталоге. «ls -a newdir»

 Смежные вопросы

  • Нет связанных вопросов^_^