“git mv *”在 Powershell 中返回“坏源”

“git mv *”在 Powershell 中返回“坏源”

在 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 将内容移动sourcewhatever文件夹,您可以运行以下命令:

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

当“源”目录不存在时也会发生这种情况。

相关内容