我想保持一个仓库的子文件夹内的文件的历史。但我需要重命名顶级文件夹名称。当我运行'git mv dirName newDirName时,我得到'Fatal:源目录为空;'
我的源目录具有以下结构:
gitRepoDir
--.git
--Source
-- -DirLevel2
-- --DirLevel3
-- --DirLevel4
-- --DirLevel5
+++ --DirNameToRename
+++ --sub1dir
+++ --File
+++ --sub2dir
+++ --File
+++ --sub3dir
+++ --File
+++ --File
+++ --sub4dir
+++ --File
字符串
是否有办法重命名顶级文件夹并维护以下子文件夹中文件的历史记录?或者我需要先创建目录结构,然后用git mv命令移动文件?
6条答案
按热度按时间13z8s7eq1#
我认为,'致命:源目录为空;',表示dirName不受git控制,因为它不是source的一部分。例如,你可以尝试“git status”,来找出git可以控制的东西。
9ceoxa922#
你应该告诉git mv跳过任何导致失败的操作
字符串
bvhaajcl3#
通常,git命令中使用的路径名是从当前目录开始的相对路径。
因此,对于您的问题,应检查以下内容。
1)dirName是否是由git管理的目录。可以使用命令
git ls-files
2)dirName文件夹是否在当前控制器下。
rqdpfwrv4#
在我的例子中,实际上是错误消息
source directory is empty
所指示的,即空的源目录不能被提交,除非我在那个目录中添加了.gitignore
file as dummy file。只有在那之后我才能git mv
那个目录。xmakbtuz5#
由于大小写敏感性,也可能发生此错误。即使在Windows上。例如:
字符串
dw1jzc5e6#
如果在源文件夹的路径中使用反斜杠,则在Windows上可能会发生这种情况。