April 12, 2017
출처 - 아웃사이더님 블로그
$ git config --global --list
현재 설정정보 조회할 수 있습니다. --global옵션은 전역설정에 대한 옵션이며 현재 프로젝트에만 적용할때는 주지 않습니다.
$ git config --global user.name "사용자명"
사용자명을 등록합니다 (필수)
$ git config --global user.email "이메일주소"
이메일 주소를 등록합니다. (필수)
$ git config --global color.ui “auto”
터미널에 표시되는 메시지에 칼라를 표시해줌git --version
git init
git add 파일명
git add -u
git commit -m "커밋메시지"
-m 은 커밋메시지를 주는 옵션으로 여러 줄의 커밋메시지를 쓸 경우 -m 을 여러개 사용할 수 있습니다.git commit -C HEAD -a --amend
-c를 사용하면 기존메시지를 수정할 수 있는 편집기를 실행해 줍니다.git status
git diff
--cached 옵션을 추가하면 스테이징영역과 저장소의 차이점을 볼 수 있다.git diff HEAD를 입력하면 저장소, 스테이징영역, 작업트리의 차이점을 모두 볼 수 있다.--stat를 추가하면 변경사항에 대한 통계를 볼 수 있습니다.git mv 파일명 새파일명
git checkout -- 파일명
git branch
-r 옵션을 사용하면 원격저장소의 브랜치를 확인할 수 있습니다.git branch 브랜치명B 브랜치명A
git branch 브랜치명
git branch -d 브랜치명
git push <repository> :<branch_name>
git push origin :102-feature-seungdolsgit branch -m 존재하는브랜치명 새로운브랜치명
-M 옵션을 사용하면 이미 있는 브랜치의 경우에도 덮어씁니다.git tag 태그명 브랜치명
git checkout 브랜치명/태그명
git checkout -b 브랜치명B 브랜치명A
git rebase 브랜치명
git rebase -i HEAD~~~
git merge 브랜치명
--squash 옵션을 주면 브랜치명의 모든 커밋을 하나의 커밋으로 만듭니다.git cherry-pick 커밋명
-n 옵션을 주면 작업트리에 합치지만 커밋은 하지 않기 때문에 여러개의 커밋을 합쳐서 커밋할 수 있습니다.git log
-1나 -2같은 옵션을 주어 출력할 커밋로그의 갯수를 지정할 수 있습니다.--pretty=oneline 옵션을 주면 한줄로 간단히 보여주고 h 처럼 형식을 정해줄 수 있습니다.-p 옵션을 사용하면 변경된 내용을 같이 보여줍니다.--since="5 hours" 이나 --before="5 hours"같은 옵션도 사용가능합니다.--graph 옵션을 주면 브랜치 트리를 볼 수 있습니다.git log 커밋명
^은 -1과 동일해서 HEAD^라고 하면 최신바로 이전 커밋이고 HEAD^^^와 같이 쓸 수 있으며 HEAD~3을 하면 HEAD의 3개 이전의 커밋을 뜻합니다.git blame 파일명
git blame -L 10,15 파일명
-L 옵션을 사용하면 10줄부터 15줄로 범위를 지정해서 볼수 있고 15대신 +5와 같이 사용할 수 있습니다.git blame -M 파일명
-M 옵션을 사용하면 반복되는 패턴을 찾아서 복사하거나 이동된 내용을 찾아줍니다.-C 옵션을 사용하면 파일간의 복사한 경우를 찾아줍니다.-C는 git log에서도 사용가능하며 내용의 복사를 찾을때는 git log에서 -p옵션을 사용합니다.git revert 커밋명
-n옵션을 사용하면 바로 커밋하지 않기 때문에 revert를 여러번한 다음에 커밋할 수 있습니다.(항상 최신의 커밋부터 revert해야 합니다.)git reset 커밋명
--soft 옵션을 사용하면 이전 커밋을 스테이징하고 커밋은 하지 않으며 --hard옵션은 저장소와 작업트리에서 커밋을 제거합니다.git reset HEAD^와 같이 입력하면 최근 1개의 커밋을 취소할 수 있습니다.git rebase -i 커밋범위
-i 옵션으로 대화형모드로 커밋 순서를 변경하거나 합치는 등의 작업을 할 수 있습니다.git clone 저장소주소 폴더명
git fetch
git pull
git fetch에서 하는 원격저장소의 변경사항을 가져와서 지역브랜치에 합치는 작업을 한꺼번에 합니다.git push
--dry-run 옵션을 사용하면 푸시된 변경사항을 확인할 수 있습니다.tag를 달았을 경우에 기본적으로 푸시 하지 않기 때문에 git push origin 태그명이나 모든 태그를 올리기 위해서 git push origin --tags를 사용해야 합니다.git remote add 이름 저장소주소
git remote
git remote show 이름
git remote rm 이름
git submodule
git submodule add 저장소주소 서브모듈경로
git submodule init 서브모듈경로
git submodule update 서브모듈경로
git archive --format=tar --prefix=폴더명/ 브랜치혹은태그 | gzip > 파일명.tar.gz
git archive --format=zip --prefix=폴더명/ 브랜치혹은태그 > 파일명.zip
--prefix를 주면 압축하일이 해당폴더 안에 생성되도록 할 수 있습니다.git mergetool
merge.tool의 값에 있는 머지툴을 찾아서 실행합니다.git gc
--aggressive 옵션을 주면 더 자세하게 최적화합니다.git rev-parse --show-toplevel
출처 - 꿀벌 개발 일지
$ git branch -va
$ git remote update
$ git log
$ git log --graph
$ git log --pretty=oneline
$ git log -p -1
$ git shortlog
$ git shortlog --no-merges
$ git show 커밋번호
$ git show topic1
$ git show HEAD^
$ git log master..topic1
$ git log origin/master..topic1
$ git commit --amend
--amend 옵션으로 커밋하면, 이전 커밋과 다른 커밋 번호가 생성된다.git blame 명령을 사용하면, 해당 코드가 언제 수정되었는지 확인할 수 있다.
$ git blame -L 11,12 README.md
출처 - 에코지오 블로그
git checkout <파일>
git checkout HEAD <파일명>
git checkout FETCH_HEAD <파일명>
git reset -- <파일명>
git reset HEAD <파일명>
git commit --amend
git reset HEAD^
git reset HEAD~2
git reset --hard HEAD~2
git reset --hard ORIG_HEAD
git revert HEAD
git reset --hard HEAD
git checkout HEAD .
git checkout -f
참조 : reset 옵션
--soft : index 보존, 워킹트리 보존. 즉 모두 보존.--mixed : index 취소, 워킹트리만 보존 (기본 옵션)--hard : index 취소, 워킹트리 취소. 즉 모두 취소.git clean -fgit clean -f -d : 디렉토리까지 제거git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.last 'log -1 HEAD'기타 다른 별칭도 지정이 가능하니, 자주 사용하는 명령어는 alias 지정을 해두는 것이 좋다.
git branchgit branch -r : 원격 브랜치 목록git branch -a : 모든 브랜치 목록git checkout remote이름/branch이름git checkout -b 생성할브랜치이름 원격브랜치이름git checkout -t remote이름/branch이름git reflog
#몇 번째 HEAD로 이동할지 확인한다.
git reset --hard HEAD@{num}작업을 막 하다가 갑자기 다른 일을 먼저 처리 해야 할 때가 있다. 그럴때, 현재 작업 트리를 temp로 저장시킬 수 있다.
$ git stash위 명령을 하게 되면, 하던 일을 저장한다.
$ git stash list위 명령어를 입력하면, stash의 목록을 확인 할 수 있다.
$ git stash apply--index 옵션을 주어야 staged 상태까지 복원이 된다.$ git stash drop stash@{0}stash unapply를 지원하지 않아 우회적으로 사용하는 방법이다.$ git stash show -p stash@{0} | git apply -R위 명령을 alias 지정하여 사용하면 편리하다.
git config --global alias.stash-unapply '!git stash show -p | git apply -R'git stash branch testchangesalias git-clear='git fetch -p && git branch --merged | grep -v "\*" | grep -v master | grep -v dev | xargs -n 1 git branch -d'git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit