2008년 9월 25일 목요일

Windows 에서 git 사용

Cygwin? msysGit?

Cygwin 을 쓰던 사람이라면 Cygwin 으로 배포되는 git 을, git 이외에 Cygwin 류의 것을 쓸 일이 없다는 사람은 msysGit 을 추천한다.

(Cygwin 홈 페이지 자신을 "a Linux-like environment for Windows" 라고 소개하고 있다.)

Cygwin 팁

Windows 폴더 팝업 메뉴에서 Cygwin shell 을 바로 띄우는 방법이다. fvue.nl/wiki/Bash_and_Windows 에 자세한 내용이 있다. (msysGit 은 설치하면 "Git Gui Here"와 "Git Bash Here" 메뉴 아이템을 추가한다.)

C:\cygwin\cygwin_here.bat (Window2000 이상)

 @echo off
 REM --- cygwin_here.bat ------------------------------------------------------
 REM function: Start Cygwin in current directory
 REM args:     - 1..9

 REM Setting `CHERE_INVOKING' prevents /etc/profile from issuing `cd $HOME'
 set CHERE_INVOKING=1
 C:\cygwin\bin\bash --login -i %1 %2 %3 %4 %5 %6 %7 %8 %9

registry 수정

 HKEY_CLASSES_ROOT
 |-Folder
   |-shell
     |-Shell to Cygwin   "Shell to Cyg&win"
       |-command         "C:\cygwin\cygwin_here.bat"

혹시 권한을 탓하며 실행을 거부하는 경우에는 Cygwin 을 실행하고 권한을 주면 된다.

 cd /
 chmod +x cygwin_here.bat

(Cygwin 에서 cat 으로 cygwin_here.bat 을 만들었는데 실행권한이 없었다. 그냥 다른 Windows 에디터를 사용했었다면 이런 일이 안 생겼을지도 모르겠다.)

원활한 원격 작업을 위한 설정

원격 저장소와 통신에 사용하는 디폴트 프로토콜은 ssh 이다. 보통 아무 작업도 해주지 않으면 push 나 pull 할 때 암호를 물어오게 되어 있다. 암호를 입력해 주면 되는데, 문제는 그렇게 두면 git gui 에서는 원격 작업을 할 수 없다는 것이다.

작업 머신에서 서버에 암호 입력 없이 접근할 수 있게 해주는 방법이 있다.

 ssh-keygen.exe -C "you@your.email.com" -t dsa

 scp ~/.ssh/id_dsa.pub  you@yourgitserver:~/.ssh/authorized_keys

(이 때 한 번 로그인 암호를 입력하게 된다.)

ssh-keygen 시에 passphrase 를 물어 오는데 입력을 하지 않는 것이 편하다. 입력을 하고 나중에 ssh-agent, ssh-add 를 이용하면 많이 불편하지는 않지만, 입력을 하지 않는 것 보다는 불편하다.

ssh-agent, ssh-add 사용하기

만일 주인이 없는 사이에 누군가 개발 머신을 켜고 원격 저장소를 엑세스하는 것을 막고자 한다면, 아니면 누군가 id_dsa 를 복사해 가서 원격 저장소를 엑세스 할 가능성을 없애려면, 매번 암호 입력을 하거나 passphrase 를 사용해서 ssh-keygen 을 해야만 한다.

아래는 ssh-agent 와 ssh-add 를 사용하는 방법이다. 먼저 Cygwin 이나 Git-Bash 를 실행하고

 eval `ssh-agent -s`
 ssh-add

passphrase 를 입력해준다.

이제 마음껏 작업한다.

 git pull
 git push
 git gui
 ...

다른 사람이 자리에 앉아서 서버에 접속할 가능성을 차단하기 위해 ssh-agent 를 죽인다.

 ssh-agent -k

물론 컴퓨터를 끄고 집에 가려 한다면 마지막 명령은 필요없다.

댓글 없음: