问题 Git:重命名分支中的目录


我有一个使用Git的项目,我已经从master分支到重命名目录。

分支中的重命名按预期工作。当我切换回主分支时,目录有其原始名称,但是还有一个空目录树,其名称在分支中将其更改为。

这是预期的行为吗? 我错过了一步吗?
我只需要删除这些空目录树吗?

我知道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

当我切换回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是一个空的目录树,所以git不会跟踪它 - 但是它在那里很难看。


10248
2017-08-11 16:32


起源

FWIW,我没有得到1.6.3.1的那种行为:在最终结账后,new_dir已经消失了。你使用的是哪个版本? - Steve Folly
我正在使用msysgit 1.6.4 - jmohr
new_dir中是否有任何隐藏的未跟踪。*文件? - Steve Folly


答案:


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


10
2017-08-11 16:37



谢谢 - 这是一个我不知道的有用命令。 - jmohr


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


1
2017-08-20 18:15