2009-08-11 169 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」