# 파일 상태 확인하기

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]



# Rebase 하기
- Rebase 의 기초, 브랜치 합치기.
- 결과는 Merge 와 같다, 가장 중요한 것은 Branch 로그를 선형적 구조로 만들 수 있다.
- 보통 리모트 브랜치에 커밋을 깔끔하게 적용하고 싶을 때 사용된다고 한다.
- 위험성을 가지므로, 좀 더 익숙해지는 날에 사용할 것이다.




* 모든 자료 출처 : http://www.git-scm.com/book/en/v2

+ Recent posts