Git 명령어 정리
Published in
5 min readJan 13, 2019
Git으로 소스를 관리하다 상황이 닥칠때만 검색하는게 귀찮아서 정리하는 포스팅입니다. 본 포스팅에는 아래와 같은 상황에 대한 명령어들을 정리합니다.
1. 파일 생성, git 추가, 수정, 삭제, commit 하는 명령어 정리
2. git commit 메시지 수정 명령어
3. branch와 merge에 대한 명령어 정리
4. git 이력 확인에 대한 명령어 정리
5. git tag에 대한 정리
6. 되돌리기 관련 명령어
1. 파일 생성, git 추가, 수정, 삭제, commit 하는 명령어 정리
git init // 해당 위치를 git 디렉토리로 설정
git add [filename] // 파일을 working -> staged area 이동
git commit // staged area -> 로컬 repo로 저장
git commit -m [메시지] // oneline commit
git status // git의 상태 확인
git rm [filename] // 파일을 추적하지 않고 삭제한다.
git rm --cached [filename]// 파일을 추적하지 않되 삭제하지 않는다.
git mv [원본이름] [파일이름] // 파일 이름을 변경한다.
2. git commit 메시지 수정 명령어
git commit 명령어에 변경 없이 amend 옵션을 추가하면 마지막 커밋 메시지를 수정하는 효과를 얻으며, 변경을 commit하고 amend 옵션을 주면 해당 사항을 반영해서 마지막 커밋 메시지를 수정한다.
git commit --amend // commit 메시지 수정
3. branch와 merge에 대한 명령어 정리
git branch // 현재 브랜치 확인
git branch [branch name] // 브랜치 추가
git checkout [branch name]// 브랜치로 이동한다.
git merge [branch name] // 현재 브랜치에서 다른 브랜치를 merge한다.git stash //staged, modified 상태의 파일을 저장한다.
git stash list // stash로 저장한 리스트를 출력한다.
git stash apply // 가장 최근에 저장한 stash를 반영한다.
git stash apply [이름] // 지정한 stash를 반영한다.
git stash drop [이름] // 지정한 stash를 삭제한다.
git stash pop // stash를 반영할 때 삭제한다.
4. git 이력 확인에 대한 명령어 정리
git log // 전체 이력을 보여준다.
git log -p // 이력을 보여줄 때, 변경된 데이터도 보여준다.
git log [filename]// 특정 파일에 대한 이력을 보여준다.
git log -p [filename] // 특정 파일의 이력과 변경된 데이터를 보여준다.
git log --stat // 커밋마다 파일의 추가/삭제된 통계데이터를 보여줌
git log --oneline // 커밋과 커밋 메시지를 조회
git log --graph // 브랜치 분기 및 병합내용을 아스키 그래프로 보여줌git diff // modified 상태의 file과 마지막 commit 비교
git diff --staged // staged 상태의 file과 마지막 commit 비교
git diff --color-words // 변경사항을 color 풀하게 비교
git diff [브랜치이름] // 현재브랜치와 선택된 브랜치와 차이점 비교
5. git tag에 대한 정리
git tag에는 간단한 light weight 태그와 annotated 태그가 있습니다. annotated 태그를 만들게 되면 누가 tag를 추가했는지와 간단한 메시지를 확인할 수 있어 tag에 대한 이력을 추적할 때 유용합니다.
git tag [태그이름] // 태그 추가
git log --decorate -1 // 최신 태그부터 한개를 조회
git tag -l // 전체 태그 조회
git show [태그이름] // 특정 태그 조회
git show-ref --tags // 해쉬값과 태그 조회
git tag [태그이름] [해쉬값] // 특정 해쉬에 태그 추가
git tag -a [태그이름] [해쉬값] // 특정 해쉬에 annotated 태그 추가
6. 되돌리기 관련 명령어
git checkout [filename] // 워킹 디렉토리의 특정파일을 마지막 커밋으로 돌림
git checkout . // 워킹 디렉토리 모든 파일을 마지막 커밋으로 돌림
git revert [commit hash 값] // 이력을 유지한채로 특정 commit으로 돌림
- ex) git revert 43ac git reset . // staging area의 모든 파일을 그 전으로 돌림
git reset [filename] // staging area의 특정 파일을 git add 전으로 돌림git reset HEAD~ // 이력 유지없이 한 단계 전 commit 으로 돌린다.
git reset HEAD~~~ // 이력 유지없이 세 단계 전 commit 으로 돌린다.
git reset HEAD~1 // 이력 유지없이 한 단계 전 commit 으로 돌린다.
git reset HEAD~3 // 이력 유지없이 세 단계 전 commit 으로 돌린다.git reset --soft HEAD~
// 이력 유지 없이, staged 상태를 유지한채 한 단계 전 commit으로 돌린다.git reset --soft ORIG_HEAD
// reset전의 commit은 ORIG_HEAD로 참조가능, 즉 reset 전 상태로 돌린다.
// 위에서 git reset --soft HEAD~ 를 입력한 상태로 돌린다.git reset --hard HEAD~2
// 이력 유지없이, staged, modified 상태를 지운채로 두 단계 전 commit으로 돌린다.git reset --hard ORIG_HEAD
// reset 명령어를 입력하기 전의 시점으로 돌린다.git checkout [hash 값] [특정폴더] // 특정폴더를 hash값 상태로 돌린다.