- q : (END) 빠져나오기
- git status : git 상태 보기
- touch filename.extension : 파일 생성
- git add * : 변경된 전체 파일 스테이징
- git add file1.extension file2.extension : 스테이징할 파일 지정
- git commit -m ‘커밋 메시지’ : commit 올리기
- git push origin master : 리모트 저장소에 push
- git diff : 아직 스테이징/커밋 되지 않은 작업 디렉토리의 untracked 파일 변경 사항 보기
- git diff --cached : 스테이징 되었지만 아직 커밋 대기 상태에 있는 untracked 파일 변경 사항 보기
- git diff HEAD : 작업 디렉토리(tracked), 스테이징된 변경사항, 저장소의 모든 차이점을 비교
- git rm --cached file1.extension : 스테이징 영역에서 특정 파일 제거(untracked)
- git checkout -- index.html : 실수로 작업 디렉토리에 있는 파일을 삭제했을 경우 취소하기
- git rm index.html : 작업 디렉토리(tracked)에 있는 파일을 삭제할 떄
- git commit -m ‘delete index.html’ : 이 또한 스테이징 영역에 올라가며 커밋 대상이 되므로 커밋을 해주어야 파일이 삭제된다.
- git rm --cached README : 스테이징 영역에서만 삭제하고 작업 디렉토리에서는 지우지 않고 싶을 때
- git rm log/*.log : log/ 디렉토리에 있는 .log 파일을 모두 삭제
- git rm *~ : ~로 끝나는 파일을 모두 삭제
- git mv script.js common.js : script.js 파일의 이름을 common.js 로 변경
- git commit -m ‘rename script.js’ : 마찬가지로 커밋을 해주어야 변경 내용 적용
- git log : 최신 순으로 커밋 로그 조회
- git log -p -2 : 최신 순으로 커밋 2개를 보여주면서 각 커밋 간의 차이점을 diff 로 보여준다.
- ‘-‘ : 수정 전 또는 삭제 된 코드
- ‘+’ : 수정 되었거나 추가 된 코드
- git branch RB_1.0 master : master 브랜치에서 RB_1.0이라는 브랜치 생성. (브랜치명에서 사용한 RB는 릴리스 브랜치의 약어)
- git branch -D 브랜치명 : 브랜치 삭제
- git branch -m 브랜치명 새브랜치명 : 브랜치명 변경
- git checkout gh-pages : 현재 master 브랜치에서 gh-pages 브랜치로 이동
- git checkout -b 새브랜치명 : 브랜치의 생성과 함께 새로 생성한 브랜치로 체크아웃
- git branch : 현재 등록된 브랜치 확인
- git branch -v : 브랜치 상세 정보 확인
- git branch --merged : 현재 브랜치에 이미 merge한 브랜치 목록 확인
- git branch —no-merged : 현재 브랜치에 merge하지 않은 브랜치 목록 확인
.gitignore
어떤 파일은 Git이 자동으로 추가하거나 untracked 파일이라고 보여줄 필요가 없다. 보통 로그 파일이나 빌드 시스템이 자동으로 생성한 파일이 그렇다.
vim 파일의 임시파일인 .swp 파일도 저장소에 추가할 필요가 없으므로 해당 파일을 .gitignore 파일에 추가하면 .swp 파일은 저장소에서 사라진다.
.gitignore 파일에 입력하는 패턴은 아래 규칙을 따른다.
- 아무것도 없는 라인이나, #로 시작하는 라인은 무시한다.
- 슬래시(/)로 시작하면 하위 디렉토리에 적용되지 않는다.
- 디렉토리는 슬래시(/)를 끝에 사용하는 것으로 표현한다.
- 느낌표(!)로 시작하는 패턴의 파일은 무시하지 않는다.
애스터리스트()는 문자가 하나도 없거나 하나 이상을 의미하고, [abc]는 중괄호 안에 있는 문자 중 하나를 의미한다. 물음표(?)는 문자 하나를 말하고, [0-9]처럼 중괄호 안의 (-)를 사용하면 그 캐릭터 사이에 있는 문자 하나를 말한다. ()를 2개 사용하여 디렉토리안의 디렉토리까지 지정할 수 있다. a//z 패턴은 a/z, a/b/z, a/b/c/z 디렉토리에 사용할 수 있다.
다음은 .gitignore 파일의 예이다.
- .*.swp - vim이 생성한 임시파일인 .swp 파일은 무시한다.
- *.a - 확장자가 .a인 파일은 무시한다.
- !lib.a - 윗 줄에서 확장자가 .a인 파일은 무시하게 했지만 lib.a는 무시하지 않는다.
- /TODO - 루트 디렉토리에 있는 TODO 파일은 무시하고 subdir/TODO처럼 하위 디렉토리에 있는 파일은 무시하지 않는다.
- build/ - build/ 디렉토리에 있는 모든 파일은 무시한다.
- doc/*.txt - 'doc/notes.txt' 같은 파일은 무시하고 doc/server/arch.txt 같은 파일은 무시하지 않는다.
- doc/**/.pdf - doc 디렉토리 아래의 모든 .pdf 파일을 무시
하지만 자신의 컴퓨터에서만 특정 파일을 배제시키고자 한다면 .*.swp을 .git/info/exclude 파일에 추가하면 된다.