2009-08-11 6 views
11

나는 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 

내가 마스터로 다시 전환 할 때 문제가 온다 :

/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"