| 환경 설정 |
| $ git config –global user.name “사용자이름” | 사용자이름으로 설정 |
| $ git config –global user.email “사용자이메일” | 사용자이메일로 설정 |
| 파일 스테이징, 커밋 |
| $ git add [파일명] | [파일명]을 스테이징 |
| $ git reset HEAD [파일명] | 스테이징 한 [파일명] 되돌리기 |
| $ git commit -m [메시지] | [메시지]와 함께 커밋 |
| $ git commit –amend | 커밋 메시지 수정 |
| $ git reset HEAD^ | 로컬 저장소에서 최근 커밋 취소 |
| $ git reset –hard [특정 커밋 해시] | 로컬 저장소에서 특정 해시를 갖는 커밋 모두 취소 |
| $ git revert [특정 커밋 해시] | [특정 커밋 해시]의 커밋은 남겨두고 변경사항만 되돌림 |
| 파일 이름 변경 |
| $ git mv [기존 파일명] [새로운 파일명] | [기존 파일명]을 [새로운 파일명]으로 변경 |
| 파일 삭제 |
| $ git rm [파일명] | 원격 저장소와 로컬 저장소에 파일 모두 삭제 |
| 특정 커밋으로 체크아웃 |
| $ git checkout [특정 커밋의 해쉬] | [특정 커밋의 해쉬]로 체크아웃 |
| 되돌리기 |
| $ git checkout — [파일명] | 수정한 파일만 되돌리기 |
| $ git restore . | 모든 파일 되돌리기 |
| Untracked files 삭제 |
| $ git clean -f | Untracked files 중 파일만 삭제 |
| $ git clean -fd | Untracked files 중 파일 + 디렉토리도 삭제 |
| 클론 |
| $ git clone ./[기존 로컬 저장소] [클론할 저장소] | 로컬에 있는 [클론할 저장소]에 [기존 로컬 저장소] 클론 |
| $ git clone [원격 리포지토리 주소] | 로컬에 원격 리포지토리 클론 |
| diff 사용하기 |
| $ git config –global diff.tool bc3 | difftool로 beyond compare 사용하기 |
| $ git config –global –add difftool.prompt false | git difftool 실행 시 파일을 비교할 것인지 대해 묻는 질문 부분이 나오지 않도록 설정 |
| $ git difftool [파일명] | [파일명] diff 하기 |
| 로그 |
| $ git log | 커밋의 해시, 작성자, 날짜, 커밋 메시지 출력 |
| $ git log –stat | git log + 각 커밋에서 변경된 파일 + 그 파일의 변경 통계(추가된 라인, 삭제된 라인 수) 출력 |
| 브랜치 생성 |
| $ git branch [branch_name] | 현재 checkout 된 로컬 브랜치로부터 새 로컬 브랜치 생성 |
| $ git checkout -b [new_branch] [parent_branch] | 기존 로컬 브랜치로부터 새 로컬 브랜치 생성 |
| 브랜치 목록 보기 |
| $ git branch | 브랜치 목록 조회 |
| $ git branch -a | 원격(remote) 브랜치 목록 조회 |
| $ git branch -r | 모든(all) 브랜치 목록 조회 |
| 작업 브랜치 전환 |
| $ git checkout [이동할 브랜치명] | [이동할 브랜치 명]으로 작업 브랜치 전환 |
| $ git checkout -t origin/[원격 브랜치명] | 원격 브랜치를 작업 브랜치로 전환(복사) |
| 브랜치 삭제 |
| $ git branch -d [삭제할 브랜치명] | 브랜치 삭제(주의 : 작업중인 브랜치는 삭제 불가) |
| 브랜치 병합 |
| $ git merge [다른브랜치명] | [다른브랜치명]과 현재 작업중인 브랜치를 병합 |
| $ git merge –no-ff [병합할 브랜치명] | 병합 커밋 강제 생성하며 병합(–no-ff는 fast-forword를 하지 않겠다는 의미) |
| 작업 푸시(push) |
| $ git push origin [원격 브랜치명] | [원격 브랜치명]이 원격 브랜치에 없으며, [로컬 브랜치명]과 같으면 로컬 브랜치명으로 새로운 원격 브랜치 생성 / [원격 브랜치명]이 있으면 [원격 브랜치명]에 푸시 |
| $ git push -u origin [원격 브랜치명] | -u 옵션은 로컬 브랜치와 원격 브랜치의 추적 관계 설정 -> 이후에 git push, git pull 만 해도 됨. |
| 로컬 저장소 태그 생성 |
| $ git tag -a v[태그] | [태그]로 로컬저장소에 태그 만들기 – ex) $ git tag -a v0.1.0 |
| 원격 저장소에 태그 푸시 |
| $ git push origin v[특정 태그] | [특정 태그]만 올라감 |
| $ git push origin origin [원격 브랜치명] –tags | –tags : 로컬의 모든 태그 올라감 |
| 태그 조회, 삭제 |
| $ git tag -l | 태그 조회하기 |
| $ git checkout tags/[태그] | [태그] 사용 |