1. 정보 설정
- git config --global user.name "자신의 닉네임"
- git config --global user.email "자신의 이메일"
2. add : index에 파일 내용 추가
- git add <file> : file을 index에 추가
- git add -u : Untracted File을 제외한 수정/삭제된 파일만 index에 추가
3. log : commit log 출력
- git log -p : 로그에서 출력되는 버전 간의 차이점을 출력
- git log --reverse : commit을 역순으로 출력
- git log <branch1>..<branch2> : 브랜치 간에 비교
- git log --branches : 로그에 모든 브랜치 표시 (--graph : 그래프로 표현, --decorate : 브랜치 명을 표시, --oneline : 한 줄로 표시)
4. diff
- git diff : index의 내용과 working copy의 내용을 비교
- git diff <commit1>..<commit2> : 버전 간의 차이점을 비교
- git diff : git add 하기 전과 add 한 후의 파일 내용을 비교
- git diff <branch1>..<branch2> : 브랜치 간의 코드를 비교
5. reset
- git reset <commit> : 현재 branch의 HEAD를 해당 commit으로 재설정
- --soft : index 보존 (add한 상태, statged 상태), 워킹 디렉터리의 파일 보존, 즉 모두 보존.
- --mixed(기본 옵션) : index 취소 (add 하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 보존
- --hard : index 취소 (add 하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 삭제, 즉 모두 취소
- git reset HEAD <file> : file을 unstaged 상태로 변경
6. revert
- git revert "버전 id" : 버전 id의 커밋을 취소한 내용을 새로운 버전으로 만드는 명령
7. branch
- git branch : 브랜치 목록을 출력
- git branch "새로운 브랜치 이름" : 브랜치를 생성
- git branch -d : 브랜치 삭제
- git branch -D : 병합하지 않은 브랜치를 강제 삭제
8. checkout
- git checkout "전환하려는 브랜치 이름" : 브랜치 전환(checkout)
- git checkout -b "생성하고 전환할 브랜치 이름" : 브랜치를 생성하고 전환
- git checkout -- <file> : 수정된 파일의 내용을 최근 커밋된 버전의 내용으로 복원
9. merge
- git checkout A, git merge B : B 브랜치를 A 브랜치로 병합 (A <- B)
10. stash
- 다른 브랜치로 checkout 해야 하는데 현재 브랜치의 작업이 끝나지 않은 경우, stash 명령어를 이용하면 작업중이던 파일을 임시로 저장해두고 현재 브랜치의 상태를 마지막 커밋의 상태로 초기화 할 수 있음. 즉, 다른 브랜치에서 작업을 끝낸 후에 작업중이던 브랜치로 복귀했을 때, 이전에 작업하던 내용을 복원할 수 있음
- stash는 modified이면서 Tracked 상태(과거에 이미 commit하여 스냅샷에 넣어진 관리 대상 상태)인 파일, Staging Area에 있는 파일을 보관해두는 장소이다.
- 어떤 브랜치에서 Stash 하고 다른 브랜치로 옮기고서 거기에 Stash를 복원할 수 있다. 그리고 꼭 워킹 디렉토리가 깨끗한 상태일 필요도 없다. 워킹 디렉토리에 수정하고 커밋하지 않은 파일들이 있을 때도 Stash를 적용할 수 있다. 만약 충돌이 있으면 알려준다.
- git stash -u : 추적중이지 않은 파일도 Stash에 저장
- git stash : 새로운 stash를 스택에 만들어 하던 작업을 임시로 저장
- git stash list : 여러번 stash한 경우, 저장한 stash 목록을 확인
- git stash apply : 가장 최근의 stash를 가져와 적용
- git stash apply [stash 이름] : stash 이름 (ex.stash${2})에 해당하는 stash를 적용
- git stash apply --index : staged 상태까지 복원
- git stash drop : stash 제거 (apply 옵션은 단순히 stash를 적용하는 것으로, 해당 stash는 스택에 여전히 남아있음)
- git stash pop : 적용과 동시에 스택에서 해당 stash를 제거 (apply + drop)
- git stash clear : stash 기록 모두 제거
11. push
- git push -u <remote> <branch> : upstream 브랜치 설정 (git push --set-upstream <remote> <branch>와 동일)
12. clone : 저장소 복제 (Clone a repository into a new directory.)
- git clone <repository url> : repository clone
- git clone -b <branch> --single-branch <repository url> : 특정 브랜치만 clone
13. tag : 태그 객체 생성, 삭제, 확인, 나열 (Create, list, delete or verify a tag object signed with GPG)
- (annotated tag :, light weight tag : )
- git tag : tag 목록 출력
- git tag <tagname> <commit> : tag 생성 (light weight tag)
- git tag -a <tagname> -m <msg> <commit> : tag 생성 (annotated tag)
- git tag -d <tagname> : tag 삭제
- git tag -v <tag-name> : tag 확인
- git tag <repository> --tags : 모든 tag push (--tags 옵션을 명시하지 않으면 tag가 push되지 않음)
기타
- git status : 프로젝트 폴더의 상태를 확인
- git init : 현재 디렉토리를 git의 (버전) 저장소로 만듦.
- --help 옵션을 통해 메뉴얼을 확인할 수 있음
- git rev-parse --show-toplevel로 git root 디렉토리를 찾을 수 있음.
참조 블로그
- Stash https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Stashing%EA%B3%BC-Cleaning#_git_stashing
- Git 기초 명령어 (https://medium.com/@pks2974/%EC%9E%90%EC%A3%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EA%B8%B0%EC%B4%88-git-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC%ED%95%98%EA%B8%B0-533b3689db81)
- 생활코딩 (https://opentutorials.org/course/2708/152423)
- reset (https://gmlwjd9405.github.io/2018/05/25/git-add-cancle.html)
- reset과 revert의 차이점을 설명하는 카툰 (https://www.popit.kr/%EA%B0%9C%EB%B0%9C%EB%B0%94%EB%B3%B4%EB%93%A4-git-back-to-the-future/)
'Git' 카테고리의 다른 글
.gitignore가 작동하지 않을 때 대처법 (0) | 2020.08.18 |
---|---|
Github ssh key 등록 (0) | 2020.06.24 |
Github Tip! (2) | 2020.06.22 |
Git Error 처리 (0) | 2020.06.22 |