1
保持狀態我有一個像刪除目錄,而在git的
/file1
/file2
/dir_a/file3
/dir_a/file4
...
的倉庫我怎麼能刪除dir_a
,並將所有內容一級目錄(在這種情況下/
),同時保持所有的狀態文件(未追蹤,已更改但未上傳),可能包含在/
中,還包含在dir_a
中?
保持狀態我有一個像刪除目錄,而在git的
/file1
/file2
/dir_a/file3
/dir_a/file4
...
的倉庫我怎麼能刪除dir_a
,並將所有內容一級目錄(在這種情況下/
),同時保持所有的狀態文件(未追蹤,已更改但未上傳),可能包含在/
中,還包含在dir_a
中?
git-mv
應該能夠處理這個。使用git mv -k dir_a/* .
,並保留暫存/非暫存狀態。這不會移動未跟蹤的文件,所以之後使用mv dir_a/* .
。
# 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
第二行可能會更好,但它爲我工作。