Git
Git¶
git --version
git config --global user.name "Lifailon"
добавить имя для коммитов
git config --global user.email "lifailon@yandex.ru"
git config --global --edit
ssh-keygen -t rsa -b 4096
Get-Service | where name -match "ssh-agent" | Set-Service -StartupType Automatic
Get-Service | where name -match "ssh-agent" | Start-Service
Get-Service | where name -match "ssh-agent" | select Name,Status,StartType
ssh-agent
ssh-add C:\Users\Lifailon\.ssh\id_rsa
cat ~\.ssh\id_rsa.pub | Set-Clipboard
copy to settings keys
cd $home\Documents\Git
git clone git@github.com:Lifailon/lifailon.github.io
cd lifailon.github.io
git grep "ping ya.ru"
поиск текста в файлах
git fetch
загрузить изменения из удаленного хранилища для обновления всех веток локального репозитория, не затрагивая текущую рабочую ветку (загружает все коммиты, ветки и т.д. которые не присутствуют в локальном репозитории)
git pull
загрузить изменения из удаленного хранилища для обновления локального репозитория (выполняет git fetch для синхронизации удаленного репозитория с локальным и git merge для обновления текущей рабочей ветки)
git status
отобразить статус изменений по файлам
git diff
отобразить историю изменений построчно
git diff pandoc
сравнивает изменения в текущей рабочей директории с последним коммитом в указанной ветке
git add .
добавить (проиндексировать) изменения во всех файлах текущего каталога
git commit -m "update powershell commands"
сохранить изменения с комментарием
git push
синхронизировать локальные изменения с репозиторием на сервере
git branch hugo
создать новую ветку
git branch -m hugo-public
переименовать текущую ветку
git branch -d hugo-public
удалить ветку
git switch hugo
переключиться на другую ветку
git push origin hugo
отправить изменения в указанную ветку
git push --set-upstream origin hugo
отслеживать изменения в ветке (позволяет делать push без указания ветки)
git merge hugo
слияние текущей ветки (pandoc) с указанной (hugo)
git log --oneline --all
лог коммитов
git log --graph
коммиты и следование веток
git log --author="Lifailon"
показывает историю коммитов указанного пользователя
git blame index.html
показывает, кто и когда внес изменения в каждую строку указанного файла
git show d01f09dead3a6a8d75dda848162831c58ca0ee13
отобразить подробный лог по номеру коммита
git restore filename
отменить все локальные изменения в рабочей копии независимо от того, были они проиндексированы или нет (если была индексация через add), возвращая его к состоянию на момент последнего коммита
git restore --source d01f09dead3a6a8d75dda848162831c58ca0ee13 filename
восстановить файл на указанную версию по хэшу индентификатора коммита
git checkout filename
откатить изменения не проиндексированные для коммита, возвращая его к состоянию, каким оно было на момент последнего коммита (если не было индексации через add)
git checkout d01f09dead3a6a8d75dda848162831c58ca0ee13
переключить локальные файлы рабочей копии на указанный коммит (переключает HEAD на указанный коммит)
git reset HEAD filename
удалить указанный файл из индекса без удаления самих изменений в файле для последующей повторной индексации (если был add но не было commit, потом выполнить checkout)
git reset --soft HEAD^
отменяет последний (^) коммит, сохраняя изменения из этого коммита в рабочем каталоге и индексе (подготовленной области), можно внести изменения в файлы и повторно их зафиксировать
git reset --hard HEAD^
полностью отменяет последний коммит, удаляя все его изменения из рабочего каталога и индекса до состояния последнего коммита
git reset --hard d01f09dead3a6a8d75dda848162831c58ca0ee13
откатывает HEAD к указанному коммиту и удаляет все коммиты, которые были сделаны после него (будут потеряны все незакоммиченные изменения и историю коммитов после указанного)
git revert HEAD --no-edit
создает новый коммит, который отменяет последний коммит (HEAD) и новый коммит будет добавлен поверх него (события записываются в git log)
git revert d01f09dead3a6a8d75dda848162831c58ca0ee13
создает новый коммит, который отменяет изменения, внесенные в указанный коммит с хешем (не изменяет историю коммитов, а создает новый коммит с изменениями отмены)
git stash
сохраняет текущие изменения в стэш (временное хранилище) и очищает рабочую директорию
git stash pop
применяет последние изменения из стэша к текущей ветке
GitHub¶
$user = "Lifailon"
$repository = "ReverseProxyNET"
Invoke-RestMethod https://api.github.com/users/$($user)
Invoke-RestMethod https://api.github.com/users/$($user)/repos
Invoke-RestMethod https://api.github.com/repos/$($user)/$($repository)/contents
Invoke-RestMethod https://api.github.com/repos/$($user)/$($repository)/contents/source/rpnet.cs
Invoke-RestMethod https://api.github.com/repos/$($user)/$($repository)/commits
$sha = $(Invoke-RestMethod https://api.github.com/repos/$($user)/$($repository)/commits).sha
Invoke-RestMethod https://api.github.com/repos/$($user)/$($repository)/commits/$($sha[-1])
Invoke-RestMethod "https://api.github.com/repos/$($user)/$($repository)/releases/latest"
$(Invoke-RestMethod "https://api.github.com/repos/$($user)/$($repository)/releases/latest").assets.name
$issues = Invoke-RestMethod https://api.github.com/repos/LibreHardwareMonitor/LibreHardwareMonitor/issues
$issue_number = $($issues | Where-Object title -match "PowerShell").number
Invoke-RestMethod https://api.github.com/repos/LibreHardwareMonitor/LibreHardwareMonitor/issues/$($issue_number)/comments
Invoke-RestMethod https://api.github.com/repos/LibreHardwareMonitor/LibreHardwareMonitor/pulls
Invoke-RestMethod https://api.github.com/repos/LibreHardwareMonitor/LibreHardwareMonitor/languages
Invoke-RestMethod https://api.github.com/repos/LibreHardwareMonitor/LibreHardwareMonitor/stargazers
Invoke-RestMethod https://api.github.com/repos/LibreHardwareMonitor/LibreHardwareMonitor/forks
Invoke-RestMethod https://api.github.com/repos/LibreHardwareMonitor/LibreHardwareMonitor/subscribers
PackageManagement¶
Import-Module PackageManagement
импортировать модуль
Get-Module PackageManagement
информация о модуле
Get-Command -Module PackageManagement
отобразить все командлеты модуля
Get-Package
отобразить все установленные пакеты PowerShellGallery
Get-Package -ProviderName msi,Programs
список установленных программ
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
включить использование протокол TLS 1.2 (если не отключены протоколы TLS 1.0 и 1.1)
Find-PackageProvider
поиск провайдеров
Install-PackageProvider PSGallery -force
установить источник
Install-PackageProvider NuGet -force
Install-PackageProvider Chocolatey -force
Get-PackageSource
источники установки пакетов
Set-PackageSource -Name PSGallery -Trusted
по умолчанию
Find-Package -Name *Veeam* -Source PSGallery
поиск пакетов с указанием источника
Install-Package -Name VeeamLogParser -ProviderName PSGallery -scope CurrentUser
Get-Command *Veeam*
Import-Module -Name VeeamLogParser
загрузить модуль
Get-Module VeeamLogParser | select -ExpandProperty ExportedCommands
отобразить список функций
winget¶
winget list
список установленных пакетов
winget search VLC
найти пакет
winget show VideoLAN.VLC
информация о пакете
winget show VideoLAN.VLC --versions
список доступных версий в репозитории
winget install VideoLAN.VLC
установить пакет
winget uninstall VideoLAN.VLC
удалить пакет
winget download jqlang.jq
загрузкить пакет (https://github.com/jqlang/jq/releases/download/jq-1.7/jq-windows-amd64.exe)
winget install jqlang.jq
добавляет в переменную среду и псевдоним командной строки jq
winget uninstall jqlang.jq
jqlang-install¶
[uri]$url = $($(irm https://api.github.com/repos/jqlang/jq/releases/latest).assets.browser_download_url -match "windows-amd64").ToString() # получить версию latest на GitHub
irm $url -OutFile "C:\Windows\System32\jq.exe" # загрузить jq.exe
Scoop¶
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex
установка
scoop help
scoop search jq
scoop info jq
(scoop info jq).version
scoop cat jq
scoop download jq
C:\Users\lifailon\scoop\cache
scoop install jq
C:\Users\lifailon\scoop\apps\jq\1.7
scoop list
(scoop list).version
scoop uninstall jq
Chocolatey¶
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
choco -v
choco -help
choco list
choco install adobereader
NuGet¶
Invoke-RestMethod https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile "$home\Documents\nuget.exe"
Invoke-Expression "$home\Documents\nuget.exe search Selenium.WebDriver"
Invoke-Expression "$home\Documents\nuget.exe install Selenium.WebDriver"
Get-Item $home\Documents\*Selenium*
& "$home\Documents\nuget.exe" list console-translate
$nuget_api_key = "<API-KEY>"
$source = "https://api.nuget.org/v3/index.json"
$Name = "Console-Translate"
$path = "$home\Documents\$Name"
New-Item -Type Directory $path
Copy-Item "$home\Documents\Git\$Name\$Name\0.2\*" "$path\"
Copy-Item "$home\Documents\Git\$Name\LICENSE" "$path\"
Copy-Item "$home\Documents\Git\$Name\README.md" "$path\"
'<?xml version="1.0"?>
<package >
<metadata>
<id>Console-Translate</id>
<version>0.2.2</version>
<authors>Lifailon</authors>
<owners>Lifailon</owners>
<description>Cross-platform client for translating text in the console, uses API Google (edded public free token), MyMemory and DeepLX (no token required)</description>
<tags>PowerShell, Module, Translate, api</tags>
<projectUrl>https://github.com/Lifailon/Console-Translate</projectUrl>
<contentFiles>
<files include="Console-Translate.psm1" buildAction="Content" />
<files include="Console-Translate.psd1" buildAction="Content" />
<files include="lang-iso-639-1.csv" buildAction="Content" />
<files include="README.md" buildAction="Content" />
<files include="LICENSE" buildAction="Content" />
</contentFiles>
</metadata>
</package>' > "$path\$Name.nuspec"
Set-Location $path
& "$home\Documents\nuget.exe" pack "$path\$Name.nuspec"
& "$home\Documents\nuget.exe" push "$path\$Name.0.2.2.nupkg" -ApiKey $nuget_api_key -Source $source
& "$home\Documents\nuget.exe" push "$path\$Name.0.2.2.nupkg" -ApiKey $nuget_api_key -Source $source -SkipDuplicate
Install-Package Console-Translate -Source nuget.org
Get-Package Console-Translate | select *
Register-PSRepository -Name "NuGet" -SourceLocation "https://www.nuget.org/api/v2" -InstallationPolicy Trusted
Get-PSRepository
Find-Module -Name Console-Translate
Install-Module Console-Translate -Repository NuGet
& "$home\Documents\nuget.exe" delete Console-Translate 0.2.0 -Source https://api.nuget.org/v3/index.json -ApiKey $nuget_api_key -NoPrompt