이번 글에서는 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@{ 번호 }
# git cherry-pick { 커밋 ID }
다른 브랜치의 커밋 하나를 쏙 골라서 현재 브랜치의 커밋으로 추가합니다.
이상으로 Git을 좀 더 유용하게 쓸 수 있는 여러 명령어에 대해 알아보았습니다.
'Git > 개념과 활용' 카테고리의 다른 글
[Git] 명령어(6) - rebase ( merge와 비교, --interactive 옵션 ) (1) | 2018.08.31 |
---|---|
[Git] Github으로 협업하기 ( 토이 팀프로젝트 시나리오, 브랜치 전략 ) (5) | 2017.12.02 |
[Git] .gitignore로 일부 파일 제외하여 push하기 (0) | 2017.11.28 |
[Git] 명령어(5) - reset, revert (0) | 2017.11.27 |
[Git] 명령어(4) - merge, conflicts (0) | 2017.11.27 |
[Git] 명령어(3) - branch (1) | 2017.11.27 |
[Git] 명령어(2) - remote, push, clone, pull (0) | 2017.11.27 |