Git 설치하기

GitHub은 일반적으로 많이 사용되는 저장소 관련 작업을 위한 데스크톱 클라이언트와 함께, 더 복잡한 작업을 위해 자동으로 업데이트되는 Git command line 에디션을 제공합니다.

Windows 사용자를 위한 GitHub

http://windows.github.com

Mac 사용자를 위한 GitHub

http://mac.github.com

리눅스와 POSIX 운영체제를 위한 Git 배포 버전은 Git의 공식 웹사이트인 Git SCM에서 확인하실 수 있습니다.

모든 플랫폼을 위한 Git

http://git-scm.com

환경 설정

모든 로컬 저장소에 적용할 사용자 정보를 설정합니다

$ git config --global user.name "[name]"

자신이 생성한 커밋(commit)에 들어갈 이름을 설정합니다

$ git config --global user.email "[email address]"

자신이 생성한 커밋에 들어갈 이메일 주소를 설정합니다

저장소 생성하기

새로운 저장소를 만들거나, 다른 저장소의 URL을 이용해 저장소를 복사합니다

$ git init [project-name]

새로운 로컬 저장소를 생성하고 이름을 정합니다.

$ git clone [url]

기존 프로젝트의 모든 커밋 내역을 가져와 저장소를 만듭니다

변경점을 저장하기

수정 사항을 검토하고 커밋을 생성합니다

$ git status

커밋할 수 있는 새로운 파일과 수정된 파일의 목록을 보여줍니다

$ git diff

수정하였으나 아직 stage하지 않은 파일의 변경점을 보여줍니다

$ git add [file]

커밋을 준비하기 위해 파일을 stage합니다

$ git diff --staged

stage하였으나 아직 커밋하지 않은 파일과 가장 최근에 커밋한 파일을 비교합니다

$ git reset [file]

파일의 내용은 유지한 채로 stage한 내역만을 제거합니다

$ git commit -m"[descriptive message]"

stage한 내용을 커밋으로 영구히 저장합니다

변경점을 묶어 관리하기

일련의 커밋에 이름을 붙이고 여러 변경점을 합칩니다

$ git branch

현재 저장소의 모든 로컬 브랜치를 보여줍니다

$ git branch [branch-name]

새로운 브랜치를 생성합니다

$ git checkout [branch-name]

특정 브랜치로 전환하고 워킹 디렉토리를 업데이트합니다

$ git merge [branch-name]

현재 브랜치에 특정 브랜치의 히스토리를 병합시킵니다

$ git branch -d [branch-name]

브랜치를 삭제합니다

파일 이름 바꾸기

버전 관리 중인 파일을 옮기거나 삭제합니다

$ git rm [file]

워킹 디렉토리에 있는 파일을 제거하고 삭제한 내역을 stage합니다

$ git rm --cached [file]

현재 파일은 그대로 두고 버전 관리 체계에서만 제거합니다

$ git mv [file-original] [file-renamed]

파일명을 변경하고 해당 내역을 stage합니다

특정 파일을 저장소에서 제외하기

임시 파일과 경로를 제외시킵니다

*.log
build/
temp-*

.gitignore이라는 텍스트 파일에 제외할 문자열 패턴을 지정하여 실수로 엉뚱한 파일이나 경로가 저장되지 않게 방지할 수 있습니다

$ git ls-files --others --ignored --exclude-standard

이 프로젝트에서 제외된 모든 파일을 보여줍니다

변경점 일부분을 저장하기

불완전한 변경 사항을 임시로 저장하거나 복원합니다

$ git stash

버전 관리 중인 모든 파일의 변경점을 임시로 저장합니다

$ git stash pop

가장 최근에 임시 저장한 내용을 복원합니다

$ git stash list

임시 저장된 모든 변경점의 목록을 보여줍니다

$ git stash drop

가장 최근에 임시 저장한 내용을 지웁니다

변경 기록 검토

프로젝트 내 파일의 변경 기록을 살펴보고 검토합니다

$ git log

현재 브랜치의 변경 기록을 보여줍니다

$ git log --follow [file]

특정 파일의 변경 기록을 보여줍니다(파일명 변경 포함)

$ git diff [first-branch]...[second-branch]

두 브랜치의 차이점을 비교합니다

$ git show [commit]

특정 커밋에 포함된 변경 사항과 메타데이터를 표시합니다

커밋 되돌리기

실수한 내용을 지우고 기록을 바꿉니다

$ git reset [commit]

현재 파일의 변경 사항은 그대로 두고 ‘[커밋]’ 이후의 모든 커밋 내용을 되돌립니다

$ git reset --hard [commit]

모든 변경점과 기록을 버리고 특정 커밋으로 되돌아갑니다

변경점을 동기화하기

원격 저장소(의 URL)을 등록하고 저장소 기록을 주고받습니다

$ git fetch [remote]

원격 저장소로부터 모든 기록을 받아옵니다

$ git merge [remote]/[branch]

원격 브랜치를 현재 사용 중인 로컬 브랜치와 병합합니다

$ git push [remote] [branch]

모든 로컬 브랜치의 변경점을 GitHub에 업로드합니다

$ git pull

북마크된 원격 브랜치의 기록을 다운로드하여 변경점을 병합합니다