git config --global user.name "Sanghyuk Jung"
git config --global user.email "[email protected]"
git config --global --list
git config --global i18n.commitEncoding cp949
git config --global i18n.logOutputEncoding cp949
git config --local user.email [email protected]
git shortlog
git log -p -2 : 최근 2개의 로그 결과 보여줌
git log --stat : 통계 정보 포함
git log --since="6 hours"
git log --before="6 hours"
git log -1 HEAD^
git log -1 HEAD^~2
git log -1 HEAD~1^^
git log -1 HEAD~3
git log -10
git log --pretty=oneline
git blame index.html
git log --pretty=oneline --graph
git log contrib --not master
git log --abbrev-commit --pretty=oneline
git rev-parse topic1
git reflog
git show HEAD@{5}
git show master@{yesterday}
git log -g master : reglog결과를 git log 명령과 같은 형태로 보여줌
git log --left-right master…experiment
git log -S<string> : search through all history. (find a deleted method)
git log --diff-filter=D --summary : lists all deleted files
git diff --stat
git diff --check : 공백문자에 대한 오류 확인
git diff --cached : staged에 대한 변경사항
git diff --staged : --cached와 같음
git mergetool
git diff master…contrib : 두 브랜치의 차이
git merge-base contrib master + git diff [commit이름] : 두 브랜치의 차이
git stash
git stash list
git stash apply
git stash apply --index : 스테이징 상태까지 만들어줌
git stash drop : 삭제
git stash pop : 적용 후 삭제
git stash show -p stash@{0} | git apply -R : 취소
git stash branch testchanges
git branch : 지역 브랜치보기
git branch -r : 원격 브랜치 보기
git branch -a : 모든 브랜치 보기
git branch -v : 마지막 커밋메시지 같이 보여주기
git branch --no-merged : 아직 머지 안 된 브랜치 보기
git branch --merged : lists branches already merged
git branch dev master (뒤쪽이 from)
git checkout -b alternative master : 생성하고 checkout
git branch newBranch : 현재 브랜치에서 새로운 브랜치 생성
git branch -f <기존브랜치> [<브랜치를 생성할 위치>] : 기존 브랜치를 새로운 브랜치로 덮어쓰기
git rebase --onto master contact search
git branch -d mybranch
git branch -D mybranch : 강제삭제
git push origin :heads/ISSUE-16 : remote branch 삭제
git tag mytag
git tag -l 'v1.4.2.*'
git tag -d mytag
git tag -a v1.4 -m 'my version 1.4'
git tag -a v1.2 9fceb02
git push origin --tags
git push origin :refs/tags/TAGNAME
git merge <브랜치> : 다른 브랜치를 현재 브랜치로 합치기
git merge --squash mybranch
git cherry-pick 321d76f
git merge --no-comit <브랜치> : commit하지 않고 합치기
git merge origin/master
git commit --amend
git commit -C HEAD -a --amend
git commit -m "메시지" --amend
git commit -C HEAD --amend : 마지막 commit 수정하고 commit 메시지 재활용
Contribution
git rebase upstream/master
git remote add <원격 저장소> <저장소 url> : 새로운 원격 저장소 추가하기
git remote -v
git remote show origin
git remote rename
git checkout -b serverfix origin/serverfix
git push origin publish_with_bloc
git push origin serverfix:awesomebranch
git push origin :serverfix : remote 브랜치 삭제
git format-patch -M origin/master
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'
git clone http://url : 복재 생성
git clone --depth 200 : 마지막 200개의 커밋만 포함하여 저장소 복제하기 git branch <새로운 브랜치> <원격 브랜치> : 원격 브랜치에서 지역 브랜치 생성하기 git fetch : origin 저장소에서 합치지 않고 지역 브랜치로 변경 가져오기
git fetch <원격 저장소> : 원격 저장소에서 합치지 않고 지역 브랜치로 변경사항 가지고 오기
git pull : origin 저장소에서 변경사항을 가져와 현재 브랜치에 합치기
git push <원격저장소> <지역 브랜치>:<원격브랜치> : 지역 브랜치를 원격 브랜치에 푸싱하기
git push <원격저장소> <지역 브랜치> : 지역 브랜치를 동일한 이름의 원격 브랜치에 푸싱하기
git push <원격 저장소> <지역브랜치> : 새로운 로컬 브랜치를 원격 저장소에 푸싱하기
git push : 지역 변경 사항을 origin 저장소에 푸싱하기
git push <원격저장소>:<원격브랜치> : 원격 브랜치 삭제하
git remote prune <원격저장소> : 원격 저장소에서 쓸모가 없어진 원격 브랜치 제거하기
git remote rm <원격저장소> : 원격 저장소를 제거하고 관련된 브랜치도 제거하기
git pull <원격저장소> <지역브랜치>: git pull origin master
-
git remote add --track master upstream [remote github repository address]
-
git pull --ff upstream master
-
git hash-object [file name]
: checksum 확인-
.git/objects/
아래에 checksum 값으로 파일 생성됨
-
-
.git/index
파일 : Git의 스테이지 -
git ls-files --stage
: 스테이지 파일의 내용 확인 -
git show [checksum]
: 파일 내용을 보여줌 -
git cat-file -t [checksum]
: checksum으로 객체의 종류 알아보기 -
git cat-file blob [checksum]
: checksum으로 파일 내용보기 -
commit과 tree도
.git/objects
아래의 객체임 -
git ls-tree HEAD
: 헤드 커밋의 내용 확인 -
git write-tree
: 트리 생성 -
echo "tree commit" | git commit-tree 0edb88 -p HEAD
: 트리를 커밋 -
cat .git/refs/heads/master
: HEAD 확인 -
git update-ref refs/heads/master [commit checksum]
-
.git/refs/heads
: 각 branch별 디렉토리가 생김-
브랜치는 commit의 참조일 뿐이다.
-
git branch -d`는 `.git/refs/heads
아래에 있는 파일을 삭제 -
체크아웃은 '해당 브랜치를 HERAD로 이동사키고 스테이지와 워킹트리를 HEAD가 가르키는 커밋과 동일한 내용으로 변경'
-
hard reset은 커밋, 스테이지, 워킹트리의 내용이 모두 같아짐
-