2009-08-11 139 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在master的最终结账后已经消失。你正在使用哪个版本? – 2009-08-11 21:31:44

+0

我正在使用msysgit 1.6.4 – jmohr 2009-08-11 21:54:12

+0

new_dir中是否有隐藏未跟踪的*文件? – 2009-08-12 05:02:44

回答

10

是的,你可以删除它。您也可以使用git clean -d删除该目录。

+0

谢谢 - 这是我不知道的一个有用的命令。 – jmohr 2009-08-11 21:56:10

1

很可能您在新目录中隐藏了文件。 “ls -a newdir”