Git command¶
main command¶
Command | 설명 | 특징 |
---|---|---|
git init | git 저장소 생성 | |
git help [커맨드 이름] | 도움말 출력 | |
git status | git이 인식하고 있는 상태 정보 출력 | |
git clone [원격 저장소 주소] | 원격 저장소 복제 | |
git clone [원격 저장소 주소] [디렉터리명] | 해당 디렉토리명으로 원격 저장소 복제 | |
git add [파일명 또는 디렉토리명] | 수정사항이 있는 특정 파일 및 디렉토리를 Staging area로 올리기 | |
git add . | 수정사항이 있는 모든 파일 add | |
git reset [파일명] | Staging area에 올렸던 파일 내리기 | |
git commit | 이력 저장 | |
git commit -m "Message" | 인라인으로 메시지를 추가하여 commit | |
git commit -a git commit -all |
modified 상태인 파일을 Add 후 commit | add+commit |
git commit -am "Message" | add+commit을 인라인으로 메시지를 추가하여 처리 | |
git remote add [원격저장소] [원격저장소주소] | 해당 이름으로 원격 저장소 등록 | |
git push -u [원격브랜치] [로컬브랜치] | Upstream 설정, 로컬 파일을 원격 저장소로 push | |
git push | upstream 설정 이후, push | |
git pull | 원격 저장소 내용 가져오기 | fetch + merge |
etc | ||
git count-objects -H | git 레포지토리 크기 |
config¶
Command | 설명 | 특징 |
---|---|---|
git config --global user.name | 사용자 설정 | --global: 현재 user의 모든 저장소 --local: 특정 저장소 --system: 해당 컴퓨터의 모든 저장소/사용자 |
git config --global user.email | 사용자 이메일 설정 | |
git config --unset git config --global --unset |
설정된 사용자 삭제 | |
git config --global init.defaultBranch main | 기본 브랜치 변경 | |
git config --global alias.<단축명령어> <실제명령어> | 단축 명령어 설정 | ex.git config --global alias.ci commit |
git config --list | config 설정 전체 출력 | |
git config |
특정 Key에 대한 값 출력 | ex. git config user.name |
status, log, show¶
- 저장소 내 정보 확인
** commit ID : SHA1 알고리즘으로 만들어진 hash 값. 중복이 없는 임의의 문자열이자 암호화된 값
Command | 설명 | 특징 |
---|---|---|
git status | git이 인식하고 있는 상태 정보 출력 | |
git status -s git status --short |
상태 정보를 간결하게 출력 | ?? : untrackedM : modified MM : 수정 상태가 staged된 후, 다시 modified A : 경로가 staged 된 후, 경로내에 untracked 파일 발생 |
git log | 저장소의 commit history 출력 | 최근 commit : (HEAD→master) |
git log -n | 최근 n개의 commit 이력 확인 | |
git log -p git log --patch |
각 log의 상세 정보 출력 | ex.git log -p -2 |
git log --pretty=oneline | 각 commit 이력을 한 줄로 출력 | |
git log --oneline | commit ID의 7번째 값까지만 출력 | |
git log --oneline --decorate=full | 브랜치, 태그 등의 관련 정보 상세 출력 | |
git log --oneline --decorate --graph | commit 이력을 그래프 형태로 출력 | |
git show | 가장 최신 commit의 상세 정보 확인 | git log -p -1 와 같음 |
git show [commit hash] | 특정 Commit의 정보 확인 | |
git show HEAD | HEAD가 참조하는 commit의 상세 정보 | |
git show HEAD^ | HEAD를 기준으로 3단계 이전의 commit 정보 출력 | |
git show HEAD~n | HEAD를 기준으로 n단계 이전의 commit 정보 출력 |
Note
- git은 HEAD나 특정 commit을 기준으로 상대경로 입력이 가능하다
- 여기서
e5b578b
는HEAD
를 기준으로 2단계 이전의 commit이므로 git show e5b578b
=git show HEAD^^
=git show HEAD~2
diff¶
- 파일의 수정 내용 비교
Command | 설명 | 특징 |
---|---|---|
* git show | 직전 commit과 비교하여 수정된 내용 출력 | |
git diff | 비교 대상을 지정하여 비교 | 옵션 없이 사용하면, Unstaged 상태의 파일들과 최신 commit 간의 파일 내용 비교 |
git diff --staged | 최근 commit과 Staging Area 파일들 간의 변경사항 확인 | |
git diff [commit hash1(변경전)] [commit hash2(변경후)] | 두 commit의 파일들 간의 변경사항 출력 | |
git diff HEAD^ HEAD | 상대경로로 최근 commit과 직전 commit 간 비교 |
reset, reflog, amend¶
- reset :
git add
|git commit
명령 취소 - reflog :
reset --hard
로 인해 삭제된 commit hash 찾기 - amend : commit 메세지 변경
Command | 설명 | 특징 |
---|---|---|
git reset | 파일들 Staging area에서 내리기 | --hard : 내용 제거 --mixed --soft |
git reset [파일명] | 특정 파일만 Staging area에서 내리기 | |
git reset HEAD^ | HEAD를 기준으로 직전의 commit으로 reset | |
git reset HEAD~n | HEAD를 기준으로 n 값 단계 전 commit으로 reset | |
git reflog | HEAD가 참조했던 commit 출력 | |
git reset --hard HEAD@{n} | HEAD가 n번 움직임 전에 참조했던 곳으로 돌아가기 | |
git commit --amend | 최근commit 수정 | 덮어쓰기 개념으로 추가 파일 Staging |
git commit --amend -m "commit 메시지" | commit 메시지 인라인으로 수정 |
checkout¶
- 과거 이력으로 복귀
Command | 설명 | 특징 |
---|---|---|
git checkout [이동할 commitdml hash] | commit 롤백 | |
git checkout - | HEAD가 이전에 참조했던 commit으로 상태변경 | |
git checkout master | HEAD가 master를 참조 | |
git checkout HEAD~n | HEAD를 기준으로 n단계 이전 commit으로 상태변경 |
Github¶
Command | 설명 | 특징 |
---|---|---|
git remote | 원격 저장소 관리 명령어, 원격 저장소 리스트 출력 |
|
git remote add [원격저장소이름] [원격저장소주소] | 해당 이름으로 원격 저장소 등록 | ex. git remote add origin https://github.com/{}/{}.git |
git remote rm [원격저장소이름] | 해당 원격 저장소를 등록 리스트에서 삭제 | |
git remote -v | 저장소의 url까지 표시 | --vervose |
git push -u [원격브랜치이름] [로컬브랜치이름] | Upstream 설정, 로컬 파일을 원격 저장소로 push | --set-upstream-to git remote는 원격 저장소의 이름만 등록하므로 상호 추적을 위한 upstream 설정 필요 |
git tag [tag] [commit hash] | tag명 기록 | Lightweight tag |
git tag -a [tag] -m “tag message” [commit ID] | 메시지를 추가하여 tag 생성 | Annotated tag |
git tag git tag -1 |
로컬 저장소의 모든 tag 조회 | |
git -l "*.n" | .n으로 종료되는 tag 출력 | |
git show [tag명] | 해당 tag 상세 정보 출력 | Annotated tag에 한함 |
git tag -d [삭제할 tag명] | 생성한 tag 삭제 | |
git checkout [tag명] | 특정 tag가 부여된 commit으로 checkout | |
git push --tags | 로컬 저장소의 전체 tag 정보를 원격저장소에 반영 | ex. git push origin --tags |
git push [tag명] | 해당 tag push | ex.git push origin "tag명" |
git revert | commit 되돌리기 | |
git revert [최근 commit hash] | ||
git revert --no-edit [commit hash] | revert commit message 수정하지 않고 default 사용 | |
git revert [commit hash1]..[commit hash2] | revert한 commit 수만큼 commit이 새로 생성됨 | commit hash1은 revert 대상에 포함되지 않음 |
Branch¶
Command | 설명 | 특징 |
---|---|---|
git branch | 생성한 브랜치 확인 | * : 현재 작업 중인 브랜치 |
git branch [브랜치명] | 브랜치 생성 | |
git branch -M | 브랜치 이동 | |
git branch -m [기존브랜치명] [변경브랜치명] | 브랜치 이름 변경 | 또는 --move |
git branch -d [브랜치명] | 브랜치 삭제 | |
git branch -D [브랜치명] | merge 되지 않은 브랜치 삭제 | |
git checkout [브랜치명] | 해당 브랜치로 작업 공간 전환 (HEAD가 참조하는 값을 변경한다) |
|
git checkout -b [브랜치명] | 브랜치 생성과 동시에 전환 | |
git merge [브랜치명] | 현재 브랜치에 해당 브랜치의 내용 병합 | 새로운 commit이 생기는 것이 아니라 브랜치의 commit으로 옮겨진다 |
Quote
- Git Docs
- DaleSeo Blog
- Visual studio를 위한 Git -> wikidocs