2011-09-07 100 views
1

保持狀態我有一個像刪除目錄,而在git的

/file1 
    /file2 
    /dir_a/file3 
    /dir_a/file4 
    ... 

的倉庫我怎麼能刪除dir_a,並將所有內容一級目錄(在這種情況下/),同時保持所有的狀態文件(未追蹤,已更改但未上傳),可能包含在/中,還包含在dir_a中?

回答

1

git-mv應該能夠處理這個。使用git mv -k dir_a/* .,並保留暫存/非暫存狀態。這不會移動未跟蹤的文件,所以之後使用mv dir_a/* .

0
# shelving unstaged stuff 
git stash 
# moving content from /dir_a to/
# that should suffice as git doesn't track directories but only files 
git status -uno -s | grep "src_dir" | awk '{print "-n " $2 " dest_dir"}' | xargs -n3 git mv -f 
# than move what remains in source dir manually: 
mv src_dir/* dest_dir 
# resurrect unstaged changes 
git stash pop 

第二行可能會更好,但它爲我工作。