Я сомневаюсь, что есть одна команда для запуска. Вам понадобится комбинация инструментов, работающих последовательно.
Git включает аргумент для перечисления всех файлов внутри репо: git ls-files
Если вы хотите перечислить только неотслеживаемые и измененные файлы, вы можете использовать -o
и -m
аргументы:
git ls-files -o -m
Если вы передадите это в функцию PowerShell, он будет представлен в виде массива, и вы сможете перебирать все эти файлы и делать с ними все, что захотите. (Я плохо знаю SVN, но, вероятно, там должна быть похожая команда.)
Вот файл сценария, который ищет .git
файл в вашем текущем рабочем каталоге, вызывает git ls-files -o -m
и передает данные в другую функцию, которая проходит через каждый файл и печатает полный путь. Вы можете скопировать или переместить или что угодно с каждым файлом:
function DoSomethingForGitLsFiles { param( [array]$FileList ) Write-Host $FileList.count 'files found:' foreach ($FilePath in $FileList) { # This is where you could copy your files out somewhere else. Write-Host "FILE: $(Get-Location)\$FilePath" } } function FindGitRepo { param( [string]$searchPath ) if (Get-ChildItem -Name -Path "$searchPath\*.git") { DoSomethingForGitLsFiles (git ls-files -o -m) } else { Write-Host "No .git repo found." } } FindGitRepo -SearchPath (Get-Location)
Когда ваши файлы находятся в отдельном месте, вы можете легко запустить 7-zip в папке и т.д ...
Тем не менее, это звучит так, как будто вам может потребоваться вместо этого ветвь с только необходимыми изменениями, которые вы можете выбрать из любого другого набора изменений, или, возможно, тайник, который вы можете повторно применить поверх набора изменений, а затем вернуть его по своему желанию.
https://git-scm.com/docs/git-stash
(В зависимости от вашего варианта использования, тайника может быть недостаточно, но он менее известен, поэтому, возможно, он будет полезен.)