Skip to content

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

Source
Web

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