Git:在分支中重命名目录

11

我有一个使用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不会跟踪它 - 但把它放在那里是很丑陋的。


就我个人而言,我在1.6.3.1版本中没有遇到这种情况:在主分支的最终检出后,new_dir已经消失了。您使用的是哪个版本? - Steve Folly
新目录中是否有任何隐藏的未跟踪 .* 文件? - Steve Folly
2个回答

10

是的,你可以移除它。你也可以使用git clean -d命令来移除该目录。


1

很有可能在新目录中有隐藏文件。请使用命令"ls -a newdir"查看。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接