git 자주 사용하는 명령어 모음 |
깃 초기화 | git init 경로명 |
깃 상태 확인 | git status |
깃 저장소 복제 | git clone 원격저장소URL 새폴더이름 |
파일 등록과 커밋 | git add 파일이름 → git commit → 에디터에서 커밋 메시지 작성 |
git commit -a → 에디터에서 커밋 메시지 작성 |
git commit -am “커밋 메시지” |
로그 확인 | git log |
커밋 비교 | git diff |
원격 저장소 별칭 확인 | git remote |
원격 저장소 별칭과 URL 확인 | git remote -v |
원격 저장소와 연결 | git remote add 원격저장소별칭 원격저장소URL |
원격 서버 삭제 | git remote rm 원격저장소별칭 |
커밋 가져오기 | git pull 또는 git fetch |
커밋 전송하기 | git push 원격저장소별칭 브랜치이름 |
현재 브랜치 확인 | git branch |
브랜치 생성 | git branch 브랜치이름 |
브랜치 이동 | git checkout 브랜치이름 |
스태시 저장 | git stash |
스태시 읽기 | git stash pop |
브랜치 병합 | git merge 브랜치이름 |
리베이스 병합 | git rebase 브랜치이름 |
리셋 | git reset 옵션 커밋ID |
리버트 취소 커밋 | git revert 커밋위치 |
태그 관리 | git tag |
태그 전송 | git push 원격저장소별칭 태그이름 |
서브모듈로 연결 | git submodule add 원격저장소URL 폴더이름 |
pros. and cons.
pros.
cons.
$ git config --global core.editor "에디터경로"
$ git config --global credential.helper cache
$ git init
$ git clone 원격저장소URL 새폴더이름
$ git add 파일이름
$ git rm --cached 파일이름
$ git reset HEAD 파일이름
$ git status
$ git mv 파일이름 새파일이름
$ git commit
$ git commit -a
$ git log
$ git log --pretty=short
$ git show 커밋ID
$ git diff
$ git diff HEAD
$ git checkout -- 수정파일이름
$ git add 수정파일이름
$ git commit -m "커밋메시지"
$ git commit -am "커밋메시지"
$ git commit --allow-empty-message -m ""
$ git commit --amend
$ git commit -v
$ git stash
$ git stash save
$ git stash save "WIP: message"
# 작업 중인 내용을 강제 커밋(비추천)
$ git commit -am "temp"
$ ...
$ git reset -soft HEAD^
###
$ git stash list
$ git stash show
$ git stash show -p stash{0}
$ git stash pop
$ git stash apply --index
$ git stash branch 브랜치이름
$ git stash apply
$ git stash apply stash@{0}
$ git stash drop
$ git clean
$ git log --oneline
$ git reset --hard HEAD^^^
$ git rest 옵션 커밋ID
$ git reset --soft HEAD~
$ git commit --amend
$ git reset --mixed 커밋ID
$ git reset 커밋ID
$ git reset --mixed HEAD~
$ git reset --hard HEAD~
# 스테이지 리셋
$ git add 파일이름
$ git reset 파일이름
$ git reset --mixed HEAD 파일이름
$ git reset 커밋ID 파일이름
# 작업취소
$ git reset --hard HEAD
# 병합 취소
$ git reset --merge HEAD~
$ git revert HEAD
$ git revert 커밋ID
$ git revert 커밋ID .. 커밋ID
$ git revert --mainline 숫자 병함커밋ID
$ git tag
$ git tag -l
$ git tag -a 버전
$ git log --decorate
$ git tag -a 버전 -m "메시지"
$ git tag -d 태그이름
$ git show 태그이름
$ git tag 태그이름
$ git tag -a 태그버전 커밋ID
$ git checkout 태그버전
$ git checkout -b 브랜치이름 태그이름
$ git push 태그이름
$ git push 원격저장소이름 --tags
$ git push --delete 원격저장소이름 태그이름
$ git push 원격저장소이름 로컬태그이름:원격저장소태그이름
$ git branch
$ git branch 브랜치이름 커밋ID
$ git rev-parse 브랜치이름
$ git branch -v
$ git checkout 브랜치이름
$ git checkout -- 파일이름
$ git checkout -
$ git checkout -b 브랜치이름
$ git checkout 커밋해시키
$ git checkout HEAD~1
$ git checkout -
$ git log --graph --all
$ git show-branch --more=10
$ git merge 브랜치이름
$ git merge 브랜치이름 --edit
$ git reset --hard HEAD^
$ git branch -d 브랜치이름
$ git merge --abort
$ git ls-files -u
$ git commit -m "resolve complicit"
$ git branch --merged
$ git branch --no-merged
$ git rebase 원본브랜치
$ git checkout 원본브랜치
$ git merge 대상브랜치
$ git rebase --continue
$ git rebase --abort
$ git rebase -i HEAD~3
$ git remote add 원격저장소별칭 폴더경로
$ git remote add 원격저장소별칭 원격저장소URL
$ git remote
$ git remote -v
$ git remote rename 변경전이름 변경후이름
$ git remote show 원격저장소이름
$ git remote rm 원격저장소이름
$ git push 원격저장소별칭 브랜치이름
$ git push -u 원격저장소별칭 브랜치이름
$ git push 원격저장소별칭 로컬브랜치이름:새로운원격브랜치
$ git pull
$ git fetch
$ git merge 원격저장소별칭/브랜치이름
$ git branch -r
$ git branch -a
$ git branch -vv
$ git checkout --track 원격저장소별칭/원격브랜치
$ git checkout -b 새이름 원격저장소별칭/브랜치이름
$ git branch -u 원격저장소별칭/브랜치이름
$ git push --set-upstream 원격저장소별칭 원격브랜치
$ git merge 원격저장소별칭/브랜치이름
$ git checkout -b 임시브랜치이름 원격저장소별칭/원격브랜치
$ git branch -d 브랜치이름
$ git branch -D 브랜치이름
$ git push 원격저장소별칭 --delete 리모트브랜치이름
$ git submodule -help
$ git submodule add 원격저장소URL 폴더이름
$ git add .gitmodules
$ git commit -m "add submodule"
$ git submodule init
$ git submodule update
# submodule 사용시, 아래 두 줄은 세트라고 생각하면 됨.
$ git pull origin master
$ git submodule update
$ git rev-parse 브랜치이름
$ git show 해시값
$ ls .git/refs -all
$ git reflog
$ git blame 파일이름
$ git blame -L 시작줄,마지막줄 파일이름. -e: 사용자 이름 대신 이메일 출력, -w: 공백 문자 무시, -M: 같은 파일 내에서 복사나 이동 감지, -C: 다른 파일에서 이동이나 복사된 것을 감지
$ git replace 커밋ID1 커밋ID2
$ git gc --auto
$ git prune --dry-run --verbose
$ git reflog expire --expire=now --expire-unreachable-now --all
$ git prune --expire now -v
$ git remote prune
$ git fetch --prune
$ git config rerere.enabled true
$ git rerere status
*basic concept
workspace -> staging area(index) -> local repository -> remote repository
stash
*file status lifecycle
1. untracked; git에 의해 추적되지 않는 파일. add the file 후 tracked로 변경됨
2. tracked; git에 의해 추적되는 파일. remove the file 하면 untracked로 변경됨
2.1 unmodified; 수정되지 않은 파일. edit the file 후 modified로 변경됨
2.2 modified; 수정된 파일. stage the file
2.3 staged; staging area에 있는 파일. commit 후에는 unmodified로 변경됨
*기본 동작
만들기
(저장소 받아오기)
파일 저장: 생성, 삭제, 수정
로컬 저장소 저장: 생성, 삭제, 수정
원격 저장소 저장: 생성, 삭제, 수정
브랜치: 생성, 삭제, 수정, 이동, 병합
*install git
-Unix/Linux
-Mac
-Windows
*config git
.gitignore
Glob pattern
*starting w/ git
git init; create local repository
git remote add <repository>; connect local repository with remote repository
git pull; get data from remote repository
git clone <repository>
ex) git clone /local/repository/path
ex) git clone user@hostname:/remote/repository/path
*basic commands
git add; workspace -> staging area(index)
git commit -a; workspace -> local repository
git push; local repository -> remote repository
git fetch; remote repository -> local repository
git merge; merge
git pull; fetch & merge
git status; modified, staged or unstaged
git diff; show differences between staged and unstaged
git diff --staged or git diff --cached; show differences between staged and committed
*snapshot
*branch
-create branch
git branch <name>
git checkout <name>
git branch -b <name>; branch & checkout
-delete branch
git branch -d <name>
-merge branch
git checkout master
git merge branch
-list branch
git branch
git branch --no-merged
git branch -merged
*rebase
*tag
-create tag
git tag <name>
git tag -a <name>
-delete tag
git tag -d <name>
-list tag
git tag
*rollback
git checkout --; rollback unstaged file
git reset HEAD; unstage staged file
git fetch origin; rollback commited file
git rest --hard oring/master
*stashing
* gitignore 재 적용
git rm -r --cached .
git add .
git commit -m "git ignore applied and fixed untracked files"
git push
git pull
git add .
git commit -m "git ignore applied"
git push
references