2009-08-11 18 views
11

私はGitを使ってディレクトリを名前変更するためにmasterから分岐したプロジェクトを持っています。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でその動作をしません:masterの最終チェックアウト後にnew_dirが消えました。どのバージョンを使用していますか? –

+0

私はmsysgit 1.6.4を使用しています – jmohr

+0

new_dirに隠されたuntracked。*ファイルはありますか? –

答えて

10

はい、削除できます。 git clean -dを使用してディレクトリを削除することもできます。

+0

ありがとう - それは私が知らなかった有用なコマンドです。 – jmohr

1

新しいディレクトリにファイルを隠している可能性は非常に高いです。 "ls -a newdir"

関連する問題