[기본 명령어]
설정(Setup)
- git init : 저장소(repository) 생성
- git clone [원격저장소 url] : 해당 원격저장소의 내용을 복제하여 로컬저장소 생성
- git config user.name “[Github 닉네임]” : 작성자 이름 설정
- git config user.email “[Github 이메일 계정]” : 작성자 이메일 설정
- git config --list : 저장소에 설정된 기본 설정 전체 출력
- git config --get [설정 항목] : 일부 설정된 항목만 출력(git config --get user.name 등)
- git help [커맨드 이름] : 도움말
Stage와 commit
- git add [파일 이름] : 수정된 파일을 staging area 올리기
- git add [디렉토리 이름] : 해당 디렉토리 내에 수정된 모든 파일을 스테이징
- git add . : working directory 내에 수정된 모든 파일을 스테이징(untracked 파일 제외)
- git commit : 이력 저장, 커밋(commit)
- git commit -m “[메시지]” : 메시지 편집기를 사용하지
- git commit -am “[메시지]” : 스테이징(add)과 커밋을 일괄 진행
상태관리(Inspect)
git status
- git status : 저장소의 커밋 이력을 출력
- git status -s : 파일 상태 정보를 간략하게 표시
git log
- git log : 저장소의 커밋 이력을 출력
- git log --pretty=oneline : 커밋을 한줄로 출력(pretty 옵션 사용)
- git log --oneline : 각 commit을 한 줄로 출력
- git log --decorate=full : 브렌치나 태그 정보를 상세히 출력
- git log --graph : 그래프 형태로 출력
git show
- git show : 가장 최근 커밋 정보를 출력
- git show [커밋 해시] : 해당 커밋의 정보 출력
- git show HEAD : HEAD가 참조하는 커밋의 정보 출력
- git show HEAD^^^ : HEAD를 기준으로 3단계 이전의 커밋 정보 출력
- git show HEAD~[n] : HEAD를 기준으로 n단계 이전의 커밋 정보 출력
git diff
- git diff : 최근 커밋과 변경 사항이 발생한(Unstaged) 파일들의 내용 비교
- git diff --staged : 최근 커밋과 Staging area의 파일 간의 변경 사항 출력
- git diff [커밋 해시(1)][**커밋 해시(2)**] : 두 커밋 간 파일의 변경 사항 출력
[커밋 조작]
Checkout
- git checkout [커밋 해시] : 해당 커밋으로 HEAD의 참조를 변경(Working directory의 내용을 변경)
- git checkout - : HEAD의 참조를 직전에 참조했던 커밋으로 변경
- git checkout master : HEAD가 master를 참조
- git checkout HEAD~n : 현재 HEAD의 참조를 기준으로 n단계 이전 커밋으로 첨조를 변경
Undoing changes
- git reset : Staging area의 파일 전체를 unstaged 상태로 되돌리기
- git reset [파일 이름] : 해당 파일을 unstaged 상태로 되돌리기
- git commit --amend : 최근 커밋을 수정하기
- git commit --amend -m “[커밋 메시지]” : 해당 메시지로 커밋 수정하기
- git reset [커밋 해시] : 해당 커밋으로 브랜치의 참조를 변경
- git reset --hard [커밋 해시] : working directory, staging area, 커밋 모두 되돌리기
- git reset --soft [커밋 해시] : working director와 staging area는 유지, 커밋은 되돌리기gi
- git reset HEAD^ : HEAD를 기준으로 직전의 커밋으로 브랜치의 참조 변경
- git reset HEAD~[정수] : HEAD를 기준으로 정수값 단계 전 커밋으로 브랜치의 참조 변경
[브랜치]
Setup
- git branch : 브랜치 목록 표시
- git branch [브랜치 이름] : 해당 브랜치 이름으로 브랜치 생성
- git checkout [브랜치 이름] : 브랜치 생성과 동시에 전환
- git checkout -b [브랜치 이름] : 브랜치 생성과 동시에 전환
- git branch -m [브랜치 이름][**새로운 브랜치 이름**] : 브랜치 이름 변경
- git branch -d [브랜치 이름] : 해당 브랜치 삭제
Merge, rewrite
Merge
- git merge [브랜치 이름] : 현 브랜치에 해당 브랜치의 내용 병합
- git merge --ff [브랜치 이름] : fast-forward 관계에 있으면 commit을 생성하지 않고 현재 브랜치의 참조 값만 변경(default)
- git merge --no--ff [브랜치 이름] : fast-forward 관계에 있어도 머지 커밋(merge commit) 생성
- git merge --squash [브랜치 이름] : fast-forward 관계에 있어도 머지 커밋 생성, 브랜치 정보 생략
- git rebase --abort : rebase 취소
rebase
- git rebase [브랜치 이름] : 현재 브랜치가 해당 브랜치(브랜치 이름)에서 부터 분기하도록 재배치
- git rebase --continue : 충돌 수정 후 재배치 진행
- git rebase --abort : rebase 취소
cherry-pick
- git cherry-pick [커밋 해시] : 해당 커밋의 내용을 현재 브랜치에 추가, 뒤에 커밋 해시를 연속 입력하면 복수로 추가 가능
- git cherry-pick [시작 지점의 커밋 해시][**끝 지점의 커밋 해시**] : 해당 구간의 커밋을 한번에 추가
- git cherry-pick --abort : 충돌이 발생했을 때 cherry-pick 취소
- git cherry-pick --continue : 충돌 해결 후 cherry-pick 진행