CLI 버전
Git 기본 명령어
git add 파일1 파일2
# 파일을 스테이지에 추가
git commit -m "title" -m "descript"
# 스테이지에 있는 파일들을 커밋 한다.
git commit -a
# Add 명령어를 생략하고 바로 커밋하고 싶을 때 사용한다.
# 변경, 삭제 된 파일은 자동 반영된다.
git push [-u] [원격저장소별명] [브랜치명]
# u 옵션은 upstream이라는 뜻이다.
git pull
# 원격 저장소의 변경사항을 워킹트리에 반영합니다.
# 사실 git fetch + git merge 명령어 입니다.
git fetch [원격저장소의 별명][브랜치 이름]
# 원격 저장소의 브랜치와 커밋들을 로컬 저장소와 동기화 합니다.
# 옵션을 생략하면 모든 원격 저장소에서 모든 브랜치를 가져옵니다.
git merge 브랜치 이름
# 지정한 브랜치의 커밋들을 현재 브랜치 및 워킹 트리에 반영합니다.
git remote add origin [URL]
# 원격 저장소 주소를 저장하는 방법
git 스테이징
git add
git add file1.txt
git reset
- 스테이지 영역에 있는 파일들을 스테이지에서 내립니다.
- 워킹트리의 내용은 변경되지 않습니다. 옵션을 생략할 경우 스테이지의 모든 변경사항을 초기화 합니다.
- 해당 리셋에는 3가지의 옵션이 있습니다.(soft, mixed, hard)
- 옵션이 없는 default 값은 mixed 입니다.
- 그리고 스테이지에서 내리는 작업을 언스테이징이라고 합니다.
git reset [파일명]
git log
git status
git log
# 현재 브랜치의 커밋 이력을 보는 명령입니다.
git log -n<숫자>
# 전체 커밋 중에서 최신 n개의 커밋만 살펴봅니다.
git log --online --graph --all --decorate
# 자주 사용하는 옵션으로 간결하고 멋지게? 보여줍니다.
# --online : 커밋 메시지를 한 줄로 요약해서 보여줍니다. 생략하면 커밋 정보를 자세하게 표출합니다.
# --graph : 커밋 메시지를 한 줄로 요약해서 보여줍니다.
# --decorate : 원래는 --decorate=short 옵션을 의미한다.
# --all : all 옵션이 없을 경우 HEAD와 관계 없는 옵션은 보여주지 않습니다.
좋은 커밋 메시지의 7가지 규칙
- 제목과 본문은 빈 줄으로 분리한다.
- 제목은 50자 이내로 쓴다.
- 제목을 영어로 쓸 경우 첫 글자는 대문자로 쓴다.
- 제목에는 마침표를 넣지 않는다.
- 제목을 영어로 쓸 경우 현재형으로 시작한다.
- 본문을 72자 단위로 줄 바꿈 한다.
- 어떻게 보다 왜를 설명한다.\
git branch
명령어 | 설명 |
---|---|
git branch [-v] |
로컬 저장소의 브랜치 목록을 보는 명령어, -v 옵션을 사용하면 마지막 커밋도 함께 표시됩니다. |
git branch [-f] <브랜치 이름> [커밋체크섬] |
새로운 브랜치를 생성, 커밋 체크섬 값을 주지 않으면 제일 최근 커밋을 불러옴 이미 있는 브랜치를 다른 커밋으로 옮기고 싶다면, -f 옵션을 주면 된다. |
git branch -r[v] |
원격 저장소에 있는 브랜치를 보고 싶을 때 사용 |
git checkout <브랜치 이름> |
특정 브랜치로 체크아웃 할 때 |
git checkout -b <브랜치이름> <커밋 체크섬> |
특정 커밋에서 브랜치를 새로 생성하고 동시에 체크아웃까지 합니다. 두 명령을 하나로 합친 명령이기에 간결하게 자주 사용합니다. |
Git 옵션 설정하기
git conifg --global <옵션명>
# 지정한 전역 옵션의 내용을 살펴 봅니다.
git config --global <옵션명> <새로운 값>
# 지정한 전역 옵션의 값을 새로 설정합니다.
git config --global --unset <옵션명>
# 지정한 전역 옵션을 삭제합니다.
git config --local <옵션명>
# 지정한 지역 옵션의 내용르 살펴 봅니다.
git config --local <옵션명> <새로운 값>
# 지정한 지역 옵션의 값을 새로 설정합니다.
git config --local --unset <옵션명>
# 지정한 지역 옵션의 값을 삭제 합니다.
git config --system <옵션명>
# 지정한 시스템 옵션의 내용을 살펴 봅니다.
git config --system <옵션명> <새로운 값>
# 지정한 옵션의 값을 새로 설정합니다.
git config --system --unset <옵션명>
# 지정한 시시틈 옵션의 값을 삭제 합니다.
git config --list
# 현재 프로젝트의 모든 옵션을 살펴 봅니다.
브랜치 생성 및 조작
브랜치 생성하기
git branch [-v]
# 로컬 저장소의 브랜치 목록을 보는 명령으로 -v 옵션을 사용하면 마지막 커밋도 함께 표시된다.
git branch -f[v]
# 새로운 브랜치를 생성한다.
# 커밋 체크섬 값을 주지 않으면, HEAD로부터 브랜치를 생성한다.
# 이미 있는 브랜치를 다른 커밋으로 옮기고 싶을 때는 -f 옵션으로 줘야한다.
git branch -r[v]
# 원격 저장소에 있는 브랜치를 보고 싶을 때 사용한다.
# 마찬가지로 -v 옵션을 추가하여 커밋 요약을 볼 수 있다.
git checkout <브랜치 이름>
# 특정 브랜치로 checkout 할 때 사용한다.
git merge <대상 브랜치>
# 현재 브랜치와 대상 브랜치를 병합할 때 사용한다.
# 병합 커밋이 새로 생기는 경우가 많다.
git rebase <대상 브랜치>
# 내 브랜치의 커밋들을 대상 브랜치에 재배치 합니다.
# 히스토리가 깔끔해져서 자주 사용하지만, 조심해서 사용해야한다.
git branch -d <브랜치 이름>
# 특정 브랜치를 삭제할 때 사용합니다.
# HEAD 브랜치나 병합이 되지 않은 브랜치는 삭제 할 수 없습니다.
git branch -D
# 브랜치를 강제로 삭제하는 명령어 이다.
# -d 로 삭제 할 수 없는 브랜치를 지우고 싶을 때 사용합니다.
revert를 사용해서 커밋을 되돌려야하는 경우
- C1 <- F1 <- C2 <- F2 <- C3(master)의 브랜치에서
- 특정 F1, F2의 기능을 취소할 때는 각각 최신 브랜치를 취소한 다음에 revert 명령어를 작성하면 됩니다.
git revert F2
git revert F1
- 위 처럼 하게 된다면, F2와 F1을 취소하는 커밋을 각각 만들어냅니다.
- 이전의 히스토리를 변경하지 않고, 깔끔하게 히스토리 중간의 여러 커밋 내용을 작업 이전 상태로 되돌 릴 수 있습니다.
git reset
git reset --hard <이동할 커밋 체크섬>
# 현재 브랜치를 지정한 커밋으로 올긴다.
# 작업 폴더의 내용도 함께 변경된다.
HEAD~, HEAD^
HEAD~<숫자>
- HEAD~은 헤드의 부모 커밋, HEAD~2는 헤드의 할아버지 커밋을 말합니다. HEAD~n은 n번재 위쪽 조상이라는 뜻이다.
HEAD^<숫자>
- HEAD^ 똑같이 부모 커밋이다. 반면 HEAD^2는 두 번째 부모를 가르킨다.
- 병합 커밋처럼 부모가 둘 이상인 커밋에서만 의미가 있다.
git reset --hard HEAD~2
# 브랜치 되돌리기
git log --online --all
# 로그 확인
Tagging
git tag -a -m <간단한 메시지> <태그 이름> [브랜치 또는 체크섬]
# -a로 주석이 있는 태그를 생성합니다.
# 메시지와 태그 이름은 필수이며, 브랜치 이름을 생략하면 HEAD에 태그를 생성한다.
git push <원격저장소 별명> <태그 이름>
# 원격 저장소에 태그를 업로드 합니다.
git tag -a -m "첫 번째 째 태그 생성" v0.1 # 주석이 있는 태그 생성
git push origin v0.1