Git 커맨드 정리

자주 사용하는 그리고 알아두면 좋은 Git 커맨드를 정리해 보자

Git 커맨드 정리
Photo by Yancy Min / Unsplash

개발자라면 보통 형상, 소스 관리 툴을 모두 사용할 것이라 믿는다. 그런 것을 전혀 모른다면, ..... 반성하시라. 아무튼 그런 형상 관리 툴 중 현재 내가 사용하고 있는 최첨단 Git.... 쿨럭. Cheat Sheet 개념으로 정리해 본다.

Git의 완전 기초 개념

Git 커맨드 설명을 위해 혹시나 git을 모르는 사람, 혹은 설명에서 나타나는 개념 확정을 위해 간단하게 아주 기본 개념을 설명해 둔다.

파일의 라이프사이클

출처: https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EC%88%98%EC%A0%95%ED%95%98%EA%B3%A0-%EC%A0%80%EC%9E%A5%EC%86%8C%EC%97%90-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0

Git은 파일을 아래와 같이 4단계로 구분한다. 개발자는 주로 Untracked 상태의 파일을 생성하여 Git에서 관리하도록 전환처리, Unmodified 파일을 수정하여 Modified, Staged 상태 변경 후 Git에 수정사항을 반영하여 다시 Unmodified로 확정하는 작업을 주로 한다.  

  • Untracked: Git에 의해 추적되지 않는 파일, untracked 제외한 다른 모든 단계는 Git에 의해 파일이 추적 & 관리되는 상태
  • Unmodified: 현재 수정 사항 없는 상태
  • Modified: 파일 수정 사항 존재
  • Staged: 파일 Commit 준비 상태, 파일 수정 사항을 Git에 업데이트하기로 결정

분산 버전 관리 시스템

Git은 분산 버전 관리 시스템이다. Git은 리모트 저장소를 통해 여러 작업자가 공유할 소스를 관리한다. 그리고 모든 작업자는 리모트 저장소의 모든 내역을 자신의 로컬에 복사하여 버전 관리를 수행한다.

개발자는 자신의 소스 수정 및 관리 업무를 로컬에서 처리한다. 로컬에서 처리가 완료되어 배포에 필요한 수정 사항 혹은 공동 작업자와 공유가 필요한 수정사항을 리모트에 반영한다.

자주 사용하는 Git 커맨드

분류 명령 설명
소스 다운 git clone ssh://[Git 경로].git
git clone https://[URL]
수정 소스 반영 준비 git status 현재 git의 파일 수정 상태 확인
git diff 수정 내역 확인
git log 현재 브랜치 commit 내역 확인
git add [파일명] 선택한 파일만 Staged 상태 전환
git add -A 수정한 모든 파일 Staged 상태 전환
수정 소스 반영 git commit -m "커밋 메시지" Staged 상태의 파일 commit, 수정 사항을 버전 관리에 추가하여 Unmodified로 전환
브랜치 기본 git checkout -b [브랜치 이름] 브랜치 생성 후 해당 브랜치로 작업 공간 전환
git merge <합병 대상 브랜치 이름> 현재 브랜치를 합병 대상 브랜치로 병합
git diff <브랜치1> <브랜치2> 브랜치 1, 2의 차이점 확인
수정 사항 리모트에 업데이트 git push origin master 로컬의 master 수정 사항을 리모트(origin)에 반영
git push origin BRANCH 로컬의 선택한 브랜치 BRANCH 수정 사항을 리모트(origin)에 반영

알아두면 유용한 Git 커맨드

분류 명령 설명
저장소 관리 git init 새로운 Git 저장소 생성
git tag - a "태그 이름" -m "로그" 태그 생성
로그 git log --pretty=oneline
or
git log --oneline
각 커밋 한 줄 보기
git log --grep "검색할 내용" 커밋 로그 검색
파일 상태 git reset HEAD 전체 파일 add 처리 취소
git reset HEAD [파일 이름] 특정 파일 add 처리 취소
git reset --soft HEAD^ 커밋 취소 후 커밋 한 파일을 Staged 상태로 변경
git reset --hard HEAD 현재 작업 디렉터리를 리모트 저장소의 마지막 commit 상태로 전환(작업 사항 삭제 주의!!)
git reset HEAD^
git push origin [브랜치] -f
마지막 push 취소(작업 저장소의 마지막 commit을 취소하고 해당 내용을 리모트 저장소에 강제 적용)

참고자료

  1. https://git-scm.com/book/ko/v2/Git의-기초-수정하고-저장소에-저장하기