본문 바로가기

잡다한 정보 Miscellaneous

Git에 대해 알아보자.

포스트 내용은 Pro Git의 번역 내용을 보고 제가 정리한 것입니다.

 

[Git 윈도우에 설치하기]

http://msysgit.github.io/

설치가 완료되면 CLI 프로그램과 GUI 프로그램을 둘 다 사용할 수 있다.

 

[Git 최초 설정]

Git을 설치하고 나면 Git의 사용 환경 한 번만 설정하면 된다. 한 번 설정한 내용은 Git을 업그레이드 해도 유지된다. 'git config'라는 도구로 설정 내용을 확인하고 변경할 수 있다.

    /etc/gitconfig 파일 : 시스템의 모든 사용자와 모든 저장소에 적용되는 설정이다.

    git config –system 옵션으로 이 파일을 읽고 쓸 수 있다.

    

~/.gitconfig 파일 : 특정 사용자에게만 적용되는 설정이다. git config –global 옵션으로

이 파일을 읽고 쓸 수 있다.

 

.gt/config : 이 파일은 Git Directory에 있고 특정 저장소(혹은 현재 작업 중인 프로젝트)

에만 적용된다. 각 설정은 역순으로 우선시 된다. 그래서 .git/config가 /etc/gitconfig보다

우선한다.

윈도우의 경우 Git은 ~/.gitconfig 파일을 $HOME Directory(C:\Documents and Settings\$USER)에 있는 .gitconfig 파일을 찾는다.

 

[사용자 정보 등록]

Git을 설치하고 가장 먼저 하는 일은 사용자 이름과 이메일 주소를 설정하는 것으로 Git은 Commit 할 때마다 이 정보를 사용한다.

 

[설정 확인]

git config –list 명령을 실행하면 모든 설정 내용을 확인할 수 있다.

Git은 같은 키를 여러 파일에서 읽기 때문에 같은 키가 하나 이상 나올 수도 있는데, 이 경우 Git은 나중 값을 사용한다.

 

[Git 저장소 만들기]

1. 이미 있는 디렉토리에서 새 저장소 만들기

이미 있는 프로젝트의 추적의 경우, 해당 프로젝트의 디렉토리로 이동해서

$ git init

명령을 실행한다. 이 명령은 .git이라는 하위디렉토리를 만든다. .git 디렉토리에는 저장소를 이루는 뼈대가 되는 파일이 들어 있다. 파일들의 버전을 관리하기 위해선 Git이 파일을 관리하도록 저장소에 추가하고 최초로 커밋한다.

 

2. 이미 있는 저장소를 Clone하기

다른 프로젝트에 참여하거나 Git 저장소를 복사하고 싶을 때 git clone 명령을 사용한다. git clone을 실행하면 프로젝트 히스토리를 전부 받아온다.

이 명령은 grit 이라는 디렉토리를 만들고 그 안에 .git 디렉토리를 만든다. 그리고 저장소의 데이터도 모두 가져오고 자동으로 가장 최신 버전을 Checkout 한다.

 

[커밋 히스토리 조회하기]

$ git log 명령을 이용한다. 이 명령은 저장소의 커밋 히스토리를 시간 순으로 보여준다. 가장 최근의 커밋이 가장 먼저 나온다. git log 명령은 다양한 옵션을 지원한다. –p는 가장 유용한 옵션 중 하나로 각 커밋의 diff 결과를 출력한다. 아래의 명령은 git log –p -2는 커밋의 diff 결과를 보여주고, -2는 최근 두 개의 결과만 보여주는 옵션이다.

이 옵션은 직접 diff를 실행한 것과 같은 결과를 출력하기 때문에 동료가 무엇을 커밋했는지 리뷰하고 빨리 조회하는데 유용하다.

 

--stat 옵션은 커밋의 통계 정보를 조회해준다. 이 옵션을 통해 얼마나 많은 파일이 변경됐는지, 또 얼마나 많은 줄을 추가하거나 삭제했는지 보여준다.

 

--pretty 옵션을 통해 log의 내용을 보여줄 때 기본 형식 이외에 여러 가지 중에 하나를 선택할 수 있다. online옵션은 각 커밋을 한 줄로 보여준다. 이외에도 short, full, fuller 옵션도 있다. format옵션은 결과를 다른 프로그램으로 파싱하고자 할 때 유용하다. 이 옵션을 사용해 저자와 커밋터를 구분하는 것이 가능한데, 여기서 저자는 원래 작업을 수행한 원작자이고 커밋터는 마지막으로 이 작업을 적용한 사람이다. online과 format 옵션은 –graph 옵션과 함께 사용할 때 더 빛난다. 이 명령은 브랜치와 머지 히스토리를 보여주는 아스키 그래프를 출력한다.

 

git log 명령의 조회 제한 조건에 대해서 알아보자.

-n은 최근 n개의 커밋을 의미한다.

--since나 –until은 시간을 기준으로 조회하는 옵션으로 정확한 날짜, 상대적인 기간 모두 사용할 수 있다.

--author 옵션으로 저자를 지정할 수도 있고

--grep 옵셔으로 커밋 메시지에서 키워드를 검색할 수도 있다.

--경로 이름 (실제 경로 이름을 말한다.) 이 옵션을 이용하면 파일 경로로 검색할 수 있다.

 

GUI 도구가 더 익숙하다면 gitk를 사용할 수 있다. git log 명령을 시각화해주는 도구다.

 

[되돌리기]

Undo는 우리가 워드작업을 할 때에도 많이 사용되는 작업이다. 단 Git을 사용하면 우리가 한 실수를 복구하지 못할 것은 거의 없지만 되돌리기는 복구할 수 없다.

 

완료한 커밋을 수정해야 할 경우 git commit –amend 명령을 이용한다. 이 명령은 Staging Area를 사용하여 커밋한다.

 

파일의 상태를 Unstage로 변경하고자 할 때에는 git reset HEAD <file> … 이라는 명령을 이용한다.

 

git status 명령을 수행하면 출력되는 결과에서 힌트를 얻을 수 있다.

 

git으로 커밋한 모든 것은 언제나 복구할 수 있다. 하지만 커밋하지 않고 잃어버린 것은 절대로 되돌릴 수 없다.

 

[리모트 저장소]

다른 사람들과 함께 일한다는 것은 리모트 저장소를 관리하고 데이터를 Push 하고 Pull 하는 것을 말한다.

 

git remote 명령으로 현재 프로젝트에 등록된 리모트 저장소들을 확인할 수 있다. 저장소를 Clone한 경우 origin이라는 리모트 저장소가 자동으로 등록된다.

 

리모트 저장소를 추가하기 위해선 git remote add 명령을 이용한다.

 

git fetch [remote – name] 이 명령은 로컬에는 없지만, 리모트 저장소에 있는 데이터를 모두 가져온다. 리모트 저장소의 데이터를 모두 로컬로 가져오지만, 자동으로 머지하지 않는다. 수동으로 하여야 한다. git pull 명령을 이용하면 리모트 저장소 브랜치에서 데이터를 가져와 자동으로 로컬 브랜치와 머지시킬 수 있다.

 

git push origin master는 프로젝트를 공유하고 싶을 때 리모트 저장소에 push 할 수 있다.

 

리모트 저장소의 구체적인 정보를 확인하기 위해선 git remote show [remote – name] 명령을 이용한다. git을 사용하다보면 이 명령은 리모트 저장소의 브랜치는 어떤 것들이 있는지, 서버에서는 삭제됐지만 아직 가지고 있는 브랜치는 어떤 것인지, git pull 명령을 실행했을 때 자동으로 머지할 브랜치는 어떤 것이 있는지 들을 보여준다.

 

git remote rename 명령을 이용하면 리모트 저장소의 이름을 변경할 수 있다. git remote rm [remote – name] 명령을 이용하면 리모트 저장소를 삭제할 수 있다.