Git:重命名分支中的目录

Posted

技术标签:

【中文标题】Git:重命名分支中的目录【英文标题】:Git: Renaming a directory in a branch 【发布时间】:2010-11-18 16:35:34 【问题描述】:

我有一个使用 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 不会跟踪它 - 但它很难看。

【问题讨论】:

FWIW,我在 1.6.3.1 中没有这种行为:在 master 最终结帐后 new_dir 消失了。你用的是哪个版本? new_dir 中是否有隐藏的未跟踪的.* 文件? 【参考方案1】:

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

【讨论】:

【参考方案2】:

您很可能在新目录中有隐藏文件。 "ls -a 新目录"

【讨论】:

以上是关于Git:重命名分支中的目录的主要内容,如果未能解决你的问题,请参考以下文章

如何重命名本地 Git 分支?

git分支重命名

在本地和远程重命名 Git 分支? [复制]

git 本地重命名文件夹大小写并提交到远程分支

git:重命名本地分支失败

git push重命名分支