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

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가지 규칙

  1. 제목과 본문은 빈 줄으로 분리한다.
  2. 제목은 50자 이내로 쓴다.
  3. 제목을 영어로 쓸 경우 첫 글자는 대문자로 쓴다.
  4. 제목에는 마침표를 넣지 않는다.
  5. 제목을 영어로 쓸 경우 현재형으로 시작한다.
  6. 본문을 72자 단위로 줄 바꿈 한다.
  7. 어떻게 보다 왜를 설명한다.\

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

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

CLI로 3-way 병합하기


#CICD #git