Git
Chapters ▾ 2nd Edition

A1.6 Appendix A: 다양한 환경에서 Git 사용하기 - Git in Powershell

Git in Powershell

Windows의 표준 CLI 터미널인 cmd.exe 는 Git을 사용하기에 별로 좋지 않다. Powershell을 쓸 줄 안다면 Powershell을 사용하는 것이 낫다. PowerShell을 Windows가 아닌 Debian 같은 환경에서 사용한다면 이어지는 내용을 동일하게 적용해볼 수 있다. Posh-Git(https://github.com/dahlbyk/posh-git) 이라는 프로젝트가 있어서 Tab 자동완성과 저장소 상태를 보여주는 프롬프트도 사용할 수 있다.

Posh-git을 사용 중인 Powershell.
Figure 165. Posh-git을 사용 중인 Powershell.

설치

필요한 것 (Windows 해당)

PowerShell 스크립트가 실행되게 하려면 우선 ExecutionPolicy 정책을 RemoteSigned 값(Undefined 또는 Restricted 제외한 허용)으로 변경해야 한다. RemoteSigned 값이 아닌 AllSigned 값으로 설정하면 스크립트를 실행하기 위해 전자서명 과정이 필요하다. RemoteSigned 값으로 설정하면 ZoneIdentifier가 Internet으로 설정된 경우(주로 웹에서 다운로드한 파일)만 전자서명이 필요하고 나머지 파일에 대해서는 전자서명이 필요하지 않다. Windows 시스템의 관리자 권한이 있다면 모든 사용자가 PowerShell을 사용할 수 있도록 "-Scope LocalMachine" 옵션을 사용할 수 있다. 일반적인 사용자라면 관리자 권한이 없기 때문에 "-Scope CurrentUser" 옵션으로 자신만이 사용가능하도록 설정할 수 있다. PowerShell의 Scope에 대한 자세한 내용은 https://technet.microsoft.com/de-de/library/hh847849.aspx 에서 찾아볼 수 있다. PowerShell의 ExecutionPolicy에 대한 자세한 내용은 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy 에서 찾아볼 수 있다.

> Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned -Force

PowerShell 갤러리로 설치

PowerShell 버전 5 이상을 사용하거나 PowerShell 4를 PackageManagement 모듈(Cmdlets)을 설치해서 사용한다면 패키지 관리자를 통해서 Posh-Git을 가져올 수 있다. 자세한 요구사항은 https://docs.microsoft.com/en-us/powershell/gallery/psget/get_psget_module 에서 확인할 수 있다.

> Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
> Update-Module PowerShellGet -Force
> Install-Module Posh-Git -Scope AllUsers

Posh-Git을 설치할 모든 사용자에 설치하지 않도 자신만 사용하게 "-Scope CurrentUser" 옵션을 적용한다. 코드의 두 번째 명령을 실행했을 때 Module 'PowerShellGet' was not installed by using Install-Module 같은 오류 메시지가 발생한다면 다음 명령을 먼저 실행해보기 바란다.

> Install-Module PowerShellGet -Force -SkipPublisherCheck

이 명령을 실행한 후에 앞서 실패한 명령을 다시 실행해본다. 이 오류는 Windows Powershell에 이미 포함되어 배포한 모듈의 인증서가 일치하지 않기 때문이다.

PowerShell 프롬프트에 Git 정보 표시

PowerShell 프롬프트에 Git 정보를 표시하려면 posh-git을 Import 해야 한다. 이를 자동으로 하려면 import 구문을 $profile 스크립트에 추가하면 된다. 이 스크립트는 PowerShell 프롬프트가 나타날 때 마다 실행된다. 염두해 둘 부분은 $profile 스크립트가 여럿일 수 있다는 점이다. console을 위한 스크립트와 ISE(통합 스크립팅 환경)를 위한 스크립트가 분리되어 있을 수 있다.

> New-Item -Name $(Split-Path -Path $profile) -ItemType Directory -Force
> 'Import-Module Posh-Git' | Out-File -Append -Encoding default -FilePath $profile

소스로 설치

https://github.com/dahlbyk/posh-git 에서 Posh-Git을 내려받아 WindowsPowershell 디렉토리에 압축을 풀어 놓는다. 그리고 관리자 권한으로 Powershell 프롬프트를 열고 아래와 같이 실행한다.

> cd ~\Documents\WindowsPowerShell\Module\posh-git
> .\install.ps1

이렇게 profile.ps1 파일에 추가한 posh-git 은 프롬프트를 새로 열 때 부터 적용된다.