รับ Git ด้วย PowerShell
หากคุณกำลังสร้างสคริปต์ เครื่องมือ หรือโมดูล PowerShell ในปัจจุบัน คุณมีแนวโน้มที่จะใช้ Git มากที่สุด อะไร คุณไม่? เป็นเพราะคุณยังไม่ได้ติดตั้งมันใช่ไหม? ฉันมีแฮ็ก PowerShell ที่ “รวดเร็วและสกปรก” เพื่อช่วยเหลือคุณในระบบ Windows เด็กชายและเด็กหญิง Linux รู้อยู่แล้วว่าต้องทำอย่างไร
โดยปกติแล้ว คุณสามารถค้นหาลิงก์ดาวน์โหลดสำหรับ Git เวอร์ชันล่าสุดได้ หรือถ้าคุณใช้ Chocolatey คุณน่าจะรู้วิธีค้นหาและติดตั้งแพ็คเกจมากที่สุด แต่บางทีคุณอาจใช้ Chocolatey ไม่ได้ (หรือไม่สามารถ) ได้ ไม่เป็นไร. PowerShell สามารถทำงานนี้ได้อย่างรวดเร็ว
#download the latest 64bit version of Git for Windows
$uri = 'https://git-scm.com/download/win'
#path to store the downloaded file
$path = $env:temp
#get the web page
$page = Invoke-WebRequest -Uri $uri -UseBasicParsing
#get the download link
$dl = ($page.links | where outerhtml -match 'git-.*-64-bit.exe' | select -first 1 * ).href
#split out the filename
$filename = split-path $dl -leaf
#construct a filepath for the download
$out = Join-Path -Path $path -ChildPath $filename
#download the file
Invoke-WebRequest -uri $dl -OutFile $out -UseBasicParsing
#check it out
Get-item $out
รหัสของฉันถือว่าคุณใช้งานบนระบบ 64 บิต ความคิดเห็นควรอธิบายวิธีการทำงานทั้งหมด เมื่อรันคุณจะได้รับการตั้งค่าล่าสุดที่ปฏิบัติการได้ ฉันแนะนำให้ติดตั้งด้วยตนเองเพื่อให้คุณสามารถกำหนดค่าได้ตามต้องการ
ที่เกี่ยวข้องกับสิ่งนี้คุณอาจต้องใช้เครื่องมือข้อขัดแย้งในการผสาน ผมใช้ kdiff3 นี่คือโค้ดที่คล้ายกันสำหรับดาวน์โหลด
$k = invoke-webrequest https://sourceforge.net/projects/kdiff3/files/kdiff3/0.9.98/KDiff3-64bit-Setup_0.9.98-2.exe/download -UseBasicParsing
$dl = $k.links | where href -match downloads
$dluri = $dl.href.split("?")[0]
$filename = Split-Path $dluri -Leaf
$out = Join-Path $path -ChildPath $filename
Invoke-WebRequest -uri $dluri -OutFile $out -UseBasicParsing
get-item $out
อีกครั้งไปข้างหน้าและติดตั้งด้วยตนเอง
แฮ็ก git สุดท้ายของฉันคือการใช้ PowerShell เพื่อรับเวอร์ชัน หากคุณติดตั้ง git ไว้ ก็สามารถรันได้อย่างง่ายดาย
git --version
ใน Windows คุณจะได้รับบางอย่างเช่น git เวอร์ชัน 2.14.1.windows.1 แต่ด้วยความที่ฉันเป็น PowerShell geek ฉันจึงต้องการแสดงเฉพาะหมายเลขเวอร์ชัน ดังนั้นฉันจึงใช้นิพจน์ทั่วไปเพื่อแยกค่า
$v = git --version
[regex]$rx ="(\d+\.){1,}\d+"
$rx.match($v).value
รหัสเดียวกันนี้จะทำงานใน PowerShell แบบโอเพ่นซอร์สบน Linux แม้ว่าผู้ใช้ Windows จะสามารถตรวจสอบรีจิสทรีได้:
Get-itemproperty HKLM:\SOFTWARE\GitForWindows | Select CurrentVersion,InstallPath
ต้องการตรวจสอบ git ล่าสุดสำหรับ Windows รุ่นล่าสุดเพื่อดูว่าคุณจำเป็นต้องดาวน์โหลดหรือไม่ ใช้ฟังก์ชันนี้
Function Get-GitCurrentRelease {
[cmdletbinding()]
Param(
[ValidateNotNullorEmpty()]
[string]$Uri = "https://api.github.com/repos/git-for-windows/git/releases/latest"
)
Begin {
Write-Verbose "[BEGIN ] Starting: $($MyInvocation.Mycommand)"
} #begin
Process {
Write-Verbose "[PROCESS] Getting current release information from $uri"
$data = Invoke-Restmethod -uri $uri -Method Get
if ($data.tag_name) {
[pscustomobject]@{
Name = $data.name
Version = $data.tag_name
Released = $($data.published_at -as [datetime])
}
}
} #process
End {
Write-Verbose "[END ] Ending: $($MyInvocation.Mycommand)"
} #end
}
สนุกใช่มั้ย? ตอนนี้ไม่มีข้อแก้ตัวในการตั้งค่า git บนเดสก์ท็อป Windows ของคุณแล้ว