Git: переименование директории в ветке - PullRequest
11 голосов
/ 11 августа 2009

У меня есть проект, использующий 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 его не отследит - но там некрасиво.

Ответы [ 2 ]

10 голосов
/ 11 августа 2009

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

1 голос
/ 20 августа 2009

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

...