Git mv失败,出现致命错误:源目录为空

qltillow  于 2023-08-01  发布在  Git
关注(0)|答案(6)|浏览(296)

我想保持一个仓库的子文件夹内的文件的历史。但我需要重命名顶级文件夹名称。当我运行'git mv dirName newDirName时,我得到'Fatal:源目录为空;'
我的源目录具有以下结构:

gitRepoDir
--.git
--Source 
--  -DirLevel2 
--   --DirLevel3 
--     --DirLevel4 
--       --DirLevel5 
+++       --DirNameToRename 
+++         --sub1dir 
+++           --File 
+++         --sub2dir 
+++           --File 
+++         --sub3dir 
+++           --File 
+++           --File 
+++         --sub4dir 
+++           --File

字符串
是否有办法重命名顶级文件夹并维护以下子文件夹中文件的历史记录?或者我需要先创建目录结构,然后用git mv命令移动文件?

13z8s7eq

13z8s7eq1#

我认为,'致命:源目录为空;',表示dirName不受git控制,因为它不是source的一部分。例如,你可以尝试“git status”,来找出git可以控制的东西。

9ceoxa92

9ceoxa922#

你应该告诉git mv跳过任何导致失败的操作

git mv -k dirName newDirName

字符串

bvhaajcl

bvhaajcl3#

通常,git命令中使用的路径名是从当前目录开始的相对路径。
因此,对于您的问题,应检查以下内容。
1)dirName是否是由git管理的目录。可以使用命令git ls-files
2)dirName文件夹是否在当前控制器下。

rqdpfwrv

rqdpfwrv4#

在我的例子中,实际上是错误消息source directory is empty所指示的,即空的源目录不能被提交,除非我在那个目录中添加了.gitignore file as dummy file。只有在那之后我才能git mv那个目录。

xmakbtuz

xmakbtuz5#

由于大小写敏感性,也可能发生此错误。即使在Windows上。例如:

git mv source/dirlevel2/ otherdir/
Fatal: source directory is empty
Fix:
git mv Source/DirLevel2/ OtherDir/

字符串

dw1jzc5e

dw1jzc5e6#

如果在源文件夹的路径中使用反斜杠,则在Windows上可能会发生这种情况。

相关问题