在 Powershell 或 CMD 中的 git 存储库中,发出
git mv * whatever
将返回
致命:坏源,源=*,目的地=无论如何
使用 MSYS(Git Bash)时,这可以正常工作。
答案1
正如本主题中其他人所指出的那样,星号不会自动扩展为 PowerShell 中的文件名。因此,get-childItem
需要使用 let 命令,它明确告诉 PowerShell 扩展通配符。
您想将结果放入括号中,以便在执行get-childItem *
整个命令之前将其展开:git mv
git mv (get-childItem *) whatever
为了节省一些按键,您可能需要使用gci
别名get-childItem
:
git mv (gci *) whatever
答案2
正如 @PetSerAI 所说,Windows 命令提示符和 PowerShell 不会扩展全局字符,因此会导致git mv
失败。
改用像 MSYS 这样的 bash shell。
答案3
使用 PowerShell 将内容移动source
到whatever
文件夹,您可以运行以下命令:
Get-ChildItem .\source\ | ForEach-Object { git mv $_.FullName .\whatever\ }
您的目录结构之前看起来是这样的:
+--C:\code\Project\
|
+----+bootstrap.py
+----+requirements.txt
+----+.gitignore
+----+source
|
+---------+manage.py
+---------+modules
+---------+templates
+---------+static
+----+whatever
|
+---------+cool.py
运行后会像这样:
+--C:\code\Project\
|
+----+bootstrap.py
+----+requirements.txt
+----+.gitignore
+----+source
+----+whatever
|
+---------+cool.py
+---------+manage.py
+---------+modules
+---------+templates
+---------+static
答案4
当“源”目录不存在时也会发生这种情况。