git - 간편가이드

git 을 시작하기 위한 간편 가이드. 어렵지 않아요 ;)

Tweet

만든이 Roger Dudler
도와준 이들@tfnico, @fhdNamics
다른 언어로 보기 english, deutsch, español, français, italiano, nederlands, português, русский,
日本語, 中文
이슈 리포트는 이쪽으로 github

설치

OSX용 git 다운로드

Windows용 git 다운로드

Linux용 git 다운로드

새로운 저장소 만들기

새로운 저장소를 만들기 위해, 다음 명령을 실행합니다.
git init
새로운 git 저장소가 만들어 집니다.

저장소 체크아웃하기

로컬 저장소를 클론(복사)하기 위해, 다음 명령을 실행합니다.
git clone /path/to/repository
원격 서버의 저장소를 클론(복사)하기 위해서는, 다음 명령을 실행합니다.
git clone username@host:/path/to/repository

작업 흐름

로컬 저장소는 git 에서 관리하는 세그루의 나무로 구성됩니다. 첫번째 나무인 Working Directory 는 실제 파일들로 이루어집니다. 두번째 나무인 Index 는 스테이징 영역(준비단계)의 역할을 하고, 마지막 나무인 HEAD 는 최종 커밋을 나타냅니다.

추가 & 커밋

다음 명령을 실행하여, 변경된 파일을 추가합니다.(Index에 추가됩니다)
git add <filename>
git add *
이것은 git 의 기본 작업흐름 첫번째 단계입니다. 실제로 변경내용을 커밋하기 위해서 다음 명령을 실행합니다.
git commit -m "Commit message"
변경내된 파일이 HEAD에 반영되었습니다. 하지만, 원격 저장소에는 아직 반영되어 있지 않습니다.

변경내용 푸시(전송)하기

로컬 저장소의 HEAD안에 현재의 변경내용이 저장되어 있습니다.이 변경내용을 원격저장소로 전송하기 위해서 다음명령을 실행합니다.
git push origin master
master 부분에는 변경내용을 푸시하고 싶은 브랜치명으로 바꿔 줍니다.

만약 기존 저장소를 클론하지 않고 사용하는 경우, 원격서버의 접속을 위해 다음 명령을 실행해야 합니다.
git remote add origin <server>
이제 변경내용을 해당 원격 서버로 푸시(전송)할 수 있습니다.

브랜치하기

브랜치는 각기 다른 독립적인 기능을 개발할 때 사용됩니다. 저장소를 만들 때 기본 브랜치는 master 브랜치입니다. 다른 브랜치를 사용해서 개발한 후에는 master 브랜치로 돌아와 머지합니다.

"feature_x" 라는 이름의 브랜치를 만들어서 스위칭합니다.
git checkout -b feature_x
master 브랜치로 돌아옵니다.
git checkout master
브랜치를 삭제합니다.
git branch -d feature_x
브랜치는 원격저장소에 푸시하기 전까지는 다른사람들이 접근할 수 없게 되어 있습니다.
git push origin <branch>

업데이트 & 머지

자신의 로컬 저장소를 최신 업데이트 상태로 만들기 위해 다음 명령을 실행합니다.
git pull
원격 저장소의 변경내용이 로컬 작업 디렉토리에 가져오고(fetch) & 머지(merge) 하게 됩니다.
다른 브랜치에 있는 변경내용을 현재 브랜치(예-master)에 머지하기 위해서는 다음 명령을 실행합니다.
git merge <branch>
git 은 두 곳 모두 변경내용을 자동머지하게 끔 되어있습니다. 그러나 항상 성공하기만 하는 건 아니고, 충돌(conflicts)이 일어날 수도 있습니다. 수동으로 파일을 수정하고 충돌이 발생하는 부분을 해결하고 머지를 해야 합니다. 수정이 완료된 후, 아래 명령을 통해 머지되었음을 확인하는 마킹을 합니다.
git add <filename>
변경내용을 머지하기전에, 비교해 볼 수도 있습니다.
git diff <source_branch> <target_branch>

태그하기

소프트웨어를 릴리즈할 때마다 태그로 만들기를 추천합니다. 태그는 이미 SVN에 존재했던 기능입니다. 새로운 태그 1.0.0 을 만들기 위해 다음 명령을 실행합니다.
git tag 1.0.0 1b2e1d63ff
위의 1b2e1d63ff 는 태그가 참조하게 되는 10자리로 구성된 커밋ID 입니다. 다음 명령을 통해 커밋ID 를 얻을 수 있습니다.
git log
커밋ID 는 앞글자 일부만 입력해도 가능은 하지만, 반드시 유일한 값이어야 합니다.

로컬 변경내용 되돌리기

실수로 뭔가 잘못한 경우 (절대 일어나선 안될 일 같은 ;) 다음 명령을 통해 로컬 변경내용을 되돌릴 수 있습니다.
git checkout -- <filename>
HEAD 의 정보를 통해 로컬에서 수정하기 전의 마지막 상태로 되돌려 줍니다. 단, 이미 인덱스(index)에 추가된 변경내용은 유지되고, 새로 만든 파일도 사라지지 않습니다.

만약 모든 로컬 변경 및 커밋 작업을 그만두기를 원하는 경우, 서버에서 최신 이력을 가져와서(fetch), 로컬 master 브랜치를 그쪽으로 가리키도록 할 수도 있습니다.
git fetch origin
git reset --hard origin/master

유용한 힌트

git의 내장GUI
gitk
콘솔에서 git output을 컬러로 출력하기
git config color.ui true
로그에서 커밋 1개당 1라인만 표시하기
git config format.pretty oneline
인터렉티브 방식으로 파일 추가하기
git add -i

링크 & 자료

그래픽 클라이언트

가이드

댓글