powershell을 사용하여 github와 화해하기
1단계: 프로젝트 디렉토리 생성 또는 CLI 생성기를 사용하여 프로젝트 구조 생성
2단계: 브라우저에서 github.com을 열고 UI를 사용하여 리포지토리 생성
3단계: CLI가 아직 생성되지 않은 경우 로컬 리포지토리 생성
4단계: 원격(Github) 저장소 추가, 초기 커밋 및 푸시 수행
음, 언젠가 git cli를 사용하여 2단계를 수행할 수 있기를 바랍니다. 그러나 현재로서는 브라우저로 이동하여 UI를 사용하여 동일한 것을 수동으로 생성하지 않고 리포지토리를 생성할 수 있는 방법이 없습니다. 그래서 여기 제 솔루션이 있습니다. 훌륭하게 작동하고 반복해서 반복하지 않아도 됩니다. 저는 Windows 컴퓨터를 사용하고 이런 종류의 자동화 스크립트를 위해 powershell을 좋아합니다. powershell 함수를 생성했는데 호출되면 Github Rest API를 사용하여 새 리포지토리를 생성하고 빈 프로젝트 README.MD 파일에 대한 초기 커밋도 수행합니다. 참조를 찾고 있는 경우를 대비하여 아래 단계를 문서화했습니다. 스크립트를 있는 그대로 사용할 수 있으며 필요에 따라 자유롭게 수정할 수 있습니다.
다음은 powershell 솔루션입니다.
여기에서 시작: github 액세스 토큰 생성 - https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
아래와 같이 접두사를 사용하여
config
라는 파일에 액세스 토큰을 배치합니다.가능하면 구성 파일이 저장된 동일한 경로에서 powershell 스크립트
New-Repo.ps1
를 생성합니다. 이 이름은 원하는 대로 다른 이름이 될 수 있습니다. 다음은 RepoName, UserName 및 ConfigFile의 세 가지 매개 변수가 있는 스크립트의 기본 구조입니다.function New-Repo {
[CmdletBinding()]
Param(
[Parameter(Mandatory = $true)]
$RepoName,
[Parameter(Mandatory = $true)]
$UserName,
$ConfigFile = "C:\Users\abhik\Documents\dev-env\powershell\GitAutomation\config" ## Default config file location
)
}
다음 코드를 추가하여 구성 파일에서 액세스 토큰을 검색합니다.
##### Read Github Access Token #####
$fileContent = Get-Content -Path $ConfigFile
$accessToken = ''
foreach ($line in $fileContent) {
if ($line.Contains('PERSONAL_ACCESS_TOKEN')) {
$accessToken = $line -replace ".*="
}
}
github repo rest endpoint
https://api.github.com/user/repos
에 대한 POST 호출을 수행합니다.##### Prepare Github API Post call #####
$user = $UserName
$pass = $accessToken
$pair = "$($user):$($pass)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$basicAuthValue = "Basic $encodedCreds"
$Headers = @{
Authorization = $basicAuthValue
}
$body = @{
name = $RepoName
accept = 'application/vnd.github.v3+json'
private = $false
}
$bodyJson = ConvertTo-Json $body
Write-Output "Posting Data: "$bodyJson
$response = Invoke-WebRequest -Method 'POST' -Uri 'https://api.github.com/user/repos' -Headers $Headers -Body $bodyJson
$responseJson = $response | ConvertFrom-Json
Write-Output "Repo : $($responseJson.html_url) Created!"
마지막이자 마지막 단계는 로컬 git repo를 초기화하고 초기 커밋을 수행하는 것입니다.
##### Create local repo and sync remote #####
Write-Output "Creating local repo..."
git init
New-Item -Path .\README.MD
git add README.MD
git commit -m 'initial commit -setup with powershell script'
Write-Output "Syncing remote..."
git remote add origin "$($responseJson.html_url).git"
git push --set-upstream origin master
이제 powershell 셸에서 이 기능에 액세스할 수 있도록 powershell 프로필에 함수를 추가했습니다. 프로필에 기능을 추가하는 방법은 다음과 같습니다.
notepad.exe $PROFILE
를 사용하여 프로필을 엽니다. 프로필을 처음 사용하는 경우 프로필 파일을 생성(수락)하라는 메시지가 표시됩니다. 프로필이 생성되면 다음 줄을 추가합니다 . C:\dev-env\powershell\GitAutomation\New-Repo.ps1
. 줄 시작 부분의 점(.)이 중요합니다. powershell에 함수를 메모리에 유지하도록 지시합니다.그렇게 해야 합니다. powershell 터미널을 다시 시작하면 프로젝트 루트 폴더 내에서
New-Repo
함수를 호출할 수 있어야 합니다. github 사용자 이름과 함께 리포지토리 이름을 전달합니다. 그런 다음 powershell이 작업을 수행하고 몇 초의 수동 작업을 절약할 수 있습니다. 개발자로서 우리는 게을러서 몇 초라도 시간을 아껴야 한다고 생각합니다 🙂.결론
위의 코드 블록은 이 자동화를 수행하는 powershell 방식을 간략하게 설명합니다. 그러나 아이디어는 쉘 스크립트로 쉽게 확장될 수 있습니다. 저는 이 스크립트를 정기적으로 사용합니다. 시간이 지남에 따라 프로그래머가 그다지 좋아하지 않는 컨텍스트 전환에서 저를 구했습니다.
전체 코드는 여기에서 확인할 수 있습니다: https://github.com/abhgho/git-powershell-automation/blob/main/New-Repo.ps1
Roman Synkevych에 Unsplash의 사진
Reference
이 문제에 관하여(powershell을 사용하여 github와 화해하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/abhgho/make-peace-with-github-using-powershell-514d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)