Recent Posts
Recent Comments
Space Shift !
Git 본문
git 커맨드는 git [커맨드 이름] 형태로 구성된다. 필요에 따라 - 또는 -- 키를 사용하여 옵션지정을 할 수 있다.
- git init : 저장소(repository) 생성
- git config user.name [작성자 이름] : 작성자 이름 설정
- git config user.email [이메일 계정] : 작성자 이메일 설정
- git config --list : 저장소 설정 전체 출력
- git config --get [설정항목] : 일부 설정항목만 출력(ex : git config --get user.name)
- git help [커맨드 이름] : 도움말
- git의 작업영역 3가지
- Working directory, Staging area, Repository
- git의 파일상태 구분 3가지
- Modified, Staged, Committed
- git reset [파일명] : Staging area에 올렸던 파일 내리기
- .gitignore : 이력관리 대상에서 제외할 경로나 파일 지정
- git status : 저장소의 상태정보 출력
- git add [파일이름] : 해당 파일을 staging area에 올리기
- git add [디렉토리 명] : 해당 디렉토리 내에 수정된 모든 파일들을 staging area에 올리기
- git add . : working directory 내에 수정된 모든 파일들을 staging area에 올리기
- git commit : 이력 저장(commit)
- git commit -m "[메시지]" : vim을 사용하지 않고 인라인으로 메시지를 추가하여 commit
- git commit -am "[메시지]" : add와 commit을 일괄적으로 진행
- git status : 저장소 파일의 상태정보 출력
- git status -s : 파일 상태정보를 간략하게 표시
- git log : 저장소의 commit이력을 출력
- git log --pretty=oneline : 각 commit을 한줄로 출력(--pretty 옵션 사용)
- git log --oneline : 각 commit을 한줄로 출력
- git log --decorate=full : 브랜치나 태그정보를 상세히 출력
- git log --graph : 그래프 형태로 출력
- git show : 가장 최근의 commit 정보 출력
- git show [commit hash] : 해당 commit의 정보 출력
- git show HEAD : HEAD가 참조하는 commit의 정보 출력
- git show HEAD^^^ : HEAD를 기준으로 3단계 이전의 commit정보 출력
- git show HEAD~[n] : HEAD를 기준으로 n단계 이전의 commit정보 출력
- git diff : 최근 commit과 변경사항이 발생한(Unstaged) 파일들의 내용비교
- git diff --staged : 최근 commit과 Staging area의 파일들 간의 변경사항 출력
- git diff [commit hash1] [commit hash2] : 두 commit의 파일들 간의 변경사항 출력
- git reset : Staging area의 파일 전체를 unstaged 상태로 되돌리기
- git reset [파일명] : 해당 파일을 unstaged 상태로 되돌리기
- git commit --amend : 최근 commit을 수정하기
- git commit --amend -m "[commit 메시지]" : 해당 메시지로 commit 수정하기
- git checkout [commit hash] : 해당 commit으로 파일상태 변경
- git checkout - : HEAD가 이전에 참조했던 commit으로 상태변경
- git checkout master : HEAD가 master를 참조
- git checkout HEAD~n : HEAD를 기준으로 n단계 이전 commit으로 상태변경
- git reset [commit hash] : 해당 commit으로 브랜치의 참조를 변경
- git reset –-hard [commit hash] : working directory, staging area, commit 모두 reset
- git reset –-mixed [commit hash] : working directory 유지, staging area, commit reset , default option
- git reset –-soft [commit hash] : working directory, staging area 유지, commit reset
- git reset HEAD^ : HEAD를 기준으로 직전의 commit으로 reset
- git reset HEAD~[정수] : HEAD를 기준으로 정수 값 단계 전 commit으로 reset
- git reflog : HEAD가 참조한 commit 이력을 공개
-
- 브랜치(branch) : 저장소(repository) 내의 독립적인 관리영역
- master 브랜치 : 저장소를 처음 생성할 때 만들어지는 브랜치
- master : 해당 브랜치의 끝(최신 commit)을 참조하는 개체
- HEAD : 어떤 commit을 가리키는 개체, HEAD가 이전 commit을 참조하면 Working directory의 내용이 이전 commit의 내용으로 변경됨
- HEAD는 참조를 참조할 수 있음. (master를 참조하거나 commit을 직접 참조 가능)
- HEAD는 git에서 사용되는 공식 명침임. master, origin 또한 공통적으로 사용되는 명칭이나 필수는 아님(다른 이름으로 변경가능)
- git remote : 추가된 원격저장소 리스트 출력
- git remote -v (--verbose) : 원격저장소 리스트 출력
- git remote add [원격 저장소 이름] [원격 저장소 주소] : 해당 이름으로 원격 저장소 등록
- git remote rm [원격저장소 이름] : 해당 원격 저장소를 등록 리스트에서 삭제
- git push -u (--set-upstream-to) [원격 저장소 이름] [로컬 브랜치 이름] : 로컬 저장소의 브랜치가 원격 저장소를 추적하도록 설정하고 파일들을 원격 저장소로 push
- git push [원격 저장소 이름] [로컬 브랜치 이름] : 로컬 저장소의 변경사항을 원격 저장소로 업로드
- git push : upstream(-u) 설정 후 인자 생략 가능
- git pull [원격 저장소 이름] [원격 브랜치 이름] : 원격 저장소의 정보를 현재 로컬 브랜치에 가져와서 병합(fetch + merge)
- 예) 원격 저장소의 브랜치가 origin/master이면 git pull origin master
- = git fetch origin and git merge origin/master
- git pull : upstream(-u) 설정 후 인자 생략 가능
- git tag : 로컬 저장소의 모든 tag를 조회
- git tag [tag명] : 현재 commit에 tag를 생성 (Lightweight tag)
- git tag [tag명] [commit ID] : 해당 commit에 tag를 생성 (Lightweight tag)
- git tag -a [tag명] –m “[tag message]” [commit ID] : 메시지를 추가하여 tag 생성 (Annotated tag)
- git tag -am [tag명] “[tag message]” : 현재 commit에 메시지를 추가하여 tag 생성 (Annotated tag)
- git show [tag명] : 해당 tag가 부착된 commit의 상세정보 확인
- git push --tags : 생성된 전체 tag를 원격 저장소에 push ( = git push origin --tags)
- git push [tag명] : 해당 tag를 원격 저장소에 push ( = git push origin “[tag명]”)
- git tag –d [tag명] : 해당 tag 삭제
- git push –d [tag명] : 원격 저장소의 해당 tag 삭제
- git revert [commit hash] : 해당 commit을 되돌리기
- git revert --no-edit [commit hash] : revert commit messege 수정하지 않고 default 사용
- git revert [commit hash1]..[commit hash2] : 해당 구간만큼 commit 되돌리기. commit ID1은 해당되지 않음
- git clone [원격 저장소 주소] : 원격 저장소의 내용을 복제
- git diff origin/master master : 원격 저장소의 master와 로컬 저장소의 master 브랜치의 참조 commit의 차이 비교
- git merge --abort : merging 작업 종료
- git fetch : 원격 저장소의 내용을 로컬 저장소로 가져오기
- git diff origin/master master : 원격 저장소의 master와 로컬 저장소의 master 브랜치의 참조 commit의 차이 비교
- git merge origin/master : 원격 저장소의 master 브랜치의 내용을 현재 로컬 브랜치에 병합
- git stash : 인덱스 영역에 트래킹 되는 파일을 임시영역에 저장하고, modified부분 Working directiory에서 제거(기본 명칭 WIP로 저장됨)
- git stash –u : 새롭게 추가된 파일(untracked)도 함께 임시영역에 저장
- git stash save [저장명칭] : 저장명칭을 주어 저장
- git stash –m “[메시지]” : 메시지를 기록하여 저장
- git stash list : stash 기록 확인
- git stash apply ; 가장 최근의 작업내용 불러오기
- git stash apply [stash명] : stash명에 해당하는 저장내용 반영
- git stash drop : 가장 최근의 stash 제거
- git stash drop [stash명] : 해당 이름의 stash 제거
- git branch : 브랜치 목록 표시
- git branch [브랜치명] : 해당 브랜치 명으로 브랜치 생성
- git checkout [브랜치명] : 해당 브랜치로 전환
- git checkout –b [브랜치명] : 브랜치 생성과 동시에 전환
- git branch -m [브랜치명] [새로운 브랜치명] : 브랜치명 변경
- git branch –d [브랜치명] : 해당 브랜치 삭제
- git merge [브랜치명] : 현 브랜치에 해당 브랜치의 내용 병합
- git merge --ff [브랜치명] : fast-forward 관계에 있으면 commit을 생성하지 않고 현재 브랜치의 참조 값 만 변경(default)
- git merge --no-ff [브랜치명] : fast-forward 관계에 있어도 merged commit 생성
- git merge --squash [브랜치명] : fast-forward 관계에 있어도 merged commit 생성, merging 브랜치 정보 생략
- git rebase [브랜치명] : 현재 브랜치가 해당 브랜치(브랜치명)에부터 분기하도록 재배치
- git rebase --continue : 충돌 수정 후 재배치 진행(commit 대신)
- git rebase --abort : rebase 취소
$ git clone https://[ID]:[PASSWORD or Access Token]@github.com/[ID]/myrepo.git
Comments