我有一个像
这样的存储库 /file1
/file2
/dir_a/file3
/dir_a/file4
...
如何删除dir_a
并将其所有内容移到一个目录(在本例中为/
),同时保留所有文件的状态(未跟踪,已更改但未暂存),这可能是包含在/
中,还包含在dir_a
?
答案 0 :(得分:1)
git-mv
应该能够解决这个问题。使用git mv -k dir_a/* .
,将保留暂存/未暂停状态。这不会移动未跟踪的文件,因此请在之后使用mv dir_a/* .
。
答案 1 :(得分: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
第二行可能会更好,但它对我有用。