When inside a git repository in Powershell or CMD, issuing
git mv * whatever
will return
fatal: bad source, source=*, destination=whatever
This works fine when using MSYS (Git Bash).
When inside a git repository in Powershell or CMD, issuing
git mv * whatever
will return
fatal: bad source, source=*, destination=whatever
This works fine when using MSYS (Git Bash).
As has been pointed out by others in this thread, the star does not automatically expand to file names in PowerShell. Thus, the command let get-childItem needs to be used, which explicitely tells PowerShell to expand wildcard characters.
You want to put the result of get-childItem * into parentheses so that they are expanded before the entire git mv command is executed:
git mv (get-childItem *) whatever
To save a few key strokes, you might want to use the alias gci for get-childItem:
git mv (gci *) whatever
As @PetSerAI said, the Windows command prompt and PowerShell will not expand the globing characters and it makes git mv fail.
Use a bash shell like MSYS instead.
Using PowerShell to move the content of source to whatever folder you can run this command:
Get-ChildItem .\source\ | ForEach-Object { git mv $_.FullName .\whatever\ }
Your directory structure would look like this before:
+--C:\code\Project\
|
+----+bootstrap.py
+----+requirements.txt
+----+.gitignore
+----+source
|
+---------+manage.py
+---------+modules
+---------+templates
+---------+static
+----+whatever
|
+---------+cool.py
And after running would look like this:
+--C:\code\Project\
|
+----+bootstrap.py
+----+requirements.txt
+----+.gitignore
+----+source
+----+whatever
|
+---------+cool.py
+---------+manage.py
+---------+modules
+---------+templates
+---------+static