"git mv *" возвращает "плохой источник" в Powershell
Когда внутри Git-репозитория в Powershell или CMD, выдача
git mv * whatever
вернусь
фатальный: плохой источник, источник =*, пункт назначения = что угодно
Это прекрасно работает при использовании MSYS (Git Bash).
2 ответа
Как уже отмечалось другими в этом потоке, звездочка не расширяется автоматически до имен файлов в PowerShell. Таким образом, команда let
get-childItem
необходимо использовать, что явно указывает PowerShell на необходимость расширения подстановочных знаков.
Вы хотите поставить результат
get-childItem *
в круглые скобки, чтобы они раскрывались перед всем
git mv
команда выполняется:
git mv (get-childItem *) whatever
Чтобы сохранить несколько нажатий клавиш, вы можете использовать псевдоним
gci
за
get-childItem
:
git mv (gci *) whatever
Как сказал @PetSerAI, командная строка Windows и PowerShell не будут расширять символы перетаскивания, и это git mv
потерпеть поражение.
Вместо этого используйте оболочку bash, например MSYS.
Использование 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
Это также происходит, когда ваш "исходный" каталог не существует.