Я сомневаюсь, что есть одна команда для запуска. Вам понадобится комбинация инструментов, работающих последовательно.
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
(В зависимости от вашего варианта использования, тайника может быть недостаточно, но он менее известен, поэтому, возможно, он будет полезен.)