git status
# 파일을 새로 추적하기 (추가하기)
git add FILENAME
- modified or untracked 상태의 파일을, stage 하기 위해서 사용한다.
- 이후에 파일이 수정되면, staged 된 파일과 별도로 modified 상태가 추가되는 것을 볼 수 있다.
# 파일 무시하기
- .gitignore 파일을 만든다.
- 패턴을 작성한다. (ex: *.[oa], *~)
- 패턴은 아래의 규칙을 따른다.
: #로 시작하는 줄은 주석이다.
: 표준 Glob 패턴을 사용한다.
: 디렉토리는 슬래시(/)를 끝에 사용하는 것으로 표현한다.
: 느낌표(!) 로 시작하는 패턴의 파일은 무시하지 않는다.
# 파일 변경사항 비교하기
git status
git diff
git diff --staged
git diff --cached
# 변경사항 커밋하기
git commit
- git 설정에 지정된 편집기가 실행된다. (git config --global core.editor)
- git commit -m "inline", 인라인 첨부 실행이 된다.
- git commit -a -m 'without staging', Staging Area 생략하고 커밋을 한다.
# 파일을 삭제하기
git rm --cached readme.txt
git rm log/\*.log
git rm \*~
# 파일 이름 변경하기
git 은 파일 이름의 변경이나 파일의 이동을 VCS시스템처럼 명시적으로 관리하지 않아도 된다.
# 복구하기
git reset
git checkout -f
git checkout HEAD
# 커밋 히스토리 조회하기
git log
# 리모트 저장소 확인하기
git remote -v
# 태그 (tag)
git tag
git tag -a v1.4 -m 'my version 1.4'
git show v1.4
# 브랜치
- Master 브랜치에는 stable 코드를 유지하도록 관리한다.
- Long-Running 브랜치를 두어 공격적으로 작업을 진행한다. (프로젝트가 큰 경우 유용)
- 토픽 브랜치, 프로젝트 크기와 상관없이 유용, 한 가지 주제나 작업을 위해 만든 짧은 호흡의 브랜치로 이용. (일상적으로 branch 되고 Merge 된 후에 삭제되는 branch)
# 체크아웃과 브랜치 하기
git branch
: branch 목록을 보여준다. ( * 기호가 붙은 브랜치는 현재 포인트하는 브랜치이다.)
git branch -v : 각 브랜치마다 마지막 커밋 메시지도 함께 보여준다.
git branch --merged : 현재 브랜치에 이미 Merge 한 브랜치 목록을 보여준다.
git branch --no-merged : 현재 브랜치에 Merge 하지 않은 브랜치를 보여주고, 해당 브랜치는 삭제되지 않는다. (강제옵션 -D를 이용하여 가능)
git branch iss53
: iss53 브랜치 만들기
git checkout iss53
: iss53 체크아웃 받기
git chechout master
: master 체크아웃 받기
git checkout -b iss53
: iss53 브랜치를 만들고 체크아웃 받기
- 브랜치를 이동하기 전에는 working Directory 를 정리하는 것이 좋다. (커밋하기 등)
# 브랜치 삭제
git branch -d hotfix
: hotfix 브랜치를 삭제한다.
# Merge
git checkout master
git merge iss53
: Fast-Forward Merge 가 이뤄진다.
master 브랜치의 포인터가 iss53 브랜치 포인터(최신 커밋)으로 이동한다.
- 3 way Merge 가 발생한 경우 공통 조상을 갖는 커밋들을 조상으로 갖는 Merge Commit 이 생긴다.
# Remote Branch
- origin 은 Remote 브랜치를 가리킨다.
- origin 을 체크아웃 받으면 로컬에 origin/master 가 생기고 master(local) 도 같은 스냅샷을 포인트한다.
- origin 이 누군가에 의해 수정되면 origin/master 와 master(local) 의 스냅샷이 어긋나기 시작한다.
# Remote Branch 동기화 하기
git fetch origin
: 리모트 서버로부터 로컬 저장소를 동기화 한다. origin/master 의 스냅샷 위치가 리모트 서버와 동기화 된다.
git push origin serverfix
: serverfix 라는 브랜치를 origin에 Push 한다.
git
git checkout -b serverfix origin/serverfix
git push origin :serverfix
: git push [remotename] [localbranch]:[remotebranch]
* 모든 자료 출처 : http://www.git-scm.com/book/en/v2