이번 글에서는 Git을 좀 더 잘 활용하기 위한 여러 명령어들을 정리해보려고 합니다.

소개할 명령어는 다음과 같습니다.

  • log
  • checkout
  • stash
  • cherry-pick

앞선 글들과 달리, 구체적인 예제는 생략하고 명령어를 나열하는 형식으로 정리해보았습니다.




1. log

# git log --oneline

로그를 한줄씩 간단하게 표현합니다.



# git log --oneline --graph

로그를 그래프로 볼 수 있습니다.

아래의 로그는 master와 child 브랜치를 병합한 후의 그래프입니다.




# git log --merges

merge된 log만 필터링해서 볼 수 있습니다.



# git reflog

실행한 모든 명령어의 로그 목록을 볼 수 있다.



# git log 브랜치1..브랜치2

master와 child 두 브랜치가 있을 때, child에는 히스토리가 없고 master에만 있는 히스토리를 보고 싶은 경우에 사용합니다.


예를 들어, master 브랜치에는 start , master1 , master2 총 3개의 커밋이 있고,

child 브랜치에는 start , child1 , child2 총 3개의 커밋이 있을 때,

git log child..master 명령어를 실행하면 master1, master2 두 브랜치만 조회됩니다.



# git log --grep 검색어

리눅스에서 grep 처럼 커밋 메3시지에 특정 단어가 포함된 로그만 조회합니다.

예를 들어, git log --grep Merge 명령어를 실행하면 커밋 메시지에 "Merge" 단어가 있는 히스토리만 조회합니다.





2. checkout

# git checkout –track { 원격브랜치 }

원격 브랜치로부터 로컬 사본을 만듭니다.



# git checkout -b { 새로운 브랜치명 } { 대상 브랜치 }

# git checkout -b { 새로운 브랜치명 } { 원격 저장소명 }/{ 대상 브랜치 }

대상 브랜치를 기반으로 새로운 브랜치를 생성한 후, 체크아웃까지 합니다.



# git checkout { 커밋 ID }

히스토리를 전부 삭제한채로 해당 버전으로 되돌아갑니다.

이 때 detached from ~~ 의 이름으로 새로운 브랜치가 생성되는데,

이름을 바꾸기 위해서는 git checkout -b { 브랜치명 } 명령어를 실행하면 됩니다.






3. stash

# git stash

현재 작업 내용을 일시적으로 저장하고, 최근 커밋 상태로 환경을 바꿉니다.

stash를 사용하면 작업 내용을 저장하기 위해 쓸데 없는 커밋을 생성하지 않기 때문에 유용합니다.



# git stash list

일시 정지된 stash 목록을 볼 수 있습니다.



# git stash stash@{ 번호 }

해당 stash의 상세정보를 볼 수 있습니다.



# git stash save "메시지"

stash를 저장할 때 메시지를 작성할 수 있습니다.

stash가 많을 때 어떤 stash인지 정보를 주기에 용이합니다.



# git stash apply stash@{ 번호 }

급한 작업을 마친 후, 해당 stash로 되돌아갑니다.



# git stash drop stash@{ 번호 }
stash를 삭제합니다.




4. cherry-pick
# git cherry-pick { 커밋 ID }

다른 브랜치의 커밋 하나를 쏙 골라서 현재 브랜치의 커밋으로 추가합니다.





이상으로 Git을 좀 더 유용하게 쓸 수 있는 여러 명령어에 대해 알아보았습니다.