<용어 정리>
Repository : 작업 저장소
Remote : 원격 저장소
Branch : 강의 지류에 비유할 수 있는 소스코드
Origin : 기본 업스트림 저장소
Master : 강의 본류에 비유할 수 있는 소스코드
HEAD : 현재 작업중인 브랜치의 최근 갱신 내용을 가리키는 포인터.
Merge : 다른 브랜치의 내용을 현재 브랜치로 가져와 합치는 작업
Checkout : 작업자의 작업트리를 저장소의 특정 지점과 일치 하도록 변경하는 작업
Commit : 현재 변경된 작업 상태를 확정하고 저장소에 저장하는 작업. 작업 변경 이력 내의 한 지점.
Fetch : 원격헤드를 참조해서 로컬에 없는 객체를 내려받는 작업.
<주요 명령어>
git init
새로운 저장소(Repository) 를 만든다
git clone
원격 저장소를 복제 받아 로컬 저장소를 생성한다
$ git clone <Remote-Repository-Host> <Directory-Name>
git fetch
원격 저장소의 변경사항을 가져온다
git pull
원격 저장소의 변경사항을 가져와서(fetch), 로컬 저장소로 합친다.(merge)
git add
새로 작업된 파일/디렉토리를 인덱스에 추가한다.
$ git add <File-Name or Directory-Name>
git commit
변경된 내용을 확정하여 지점을 만들고, HEAD에 반영한다
$ git commit –m “이 커밋에 대한 설명”
$ git commit –-amend : 최근 커밋의 내용(커밋 파일 추가 or 메시지 수정) 을 수정하고 덮어쓴다.
git push
원격 저장소로 반영한다
ex) $ git push origin master
git stash
워킹 디렉토리에 unstaged 파일들을 백업하고 워킹디렉토리를 깨끗한 상태 즉 HEAD의 상태로 만든다
$ git stash save : 현재 작업을 저장하고 HEAD 로 복원한다
$ git stash list : 저장된 stash 목록을 보여준다
$ git stash pop : 가장 최근에 save 한 stash 를 꺼내서 적용한다
$ git stash apply : stash pop 과 동일하지만 list 에서 삭제하지 않는다
$ git stash clear : 전체 stash 삭제
$ git stash drop : 필요없는 stash 삭제
git status
현재 저장소의 상태 확인한다 (브랜치 정보 및 commint/add 해야 할 파일들)
git branch
브랜치 작업
$ git branch <Branch-Name> : 현재 Repository 에 새 브랜치 생성
$ git branch : 로컬에 저장된 브랜치 목록 보기
$ git branch –a : 로컬&원격 브랜치 목록 확인
$ git branch –d <Branch-Name> : 브랜치 삭제
git checkout
$ git checkout <Branch-Name> : 브랜치 전환
$ git checkout –b <Branch-Name> : 브랜치 생성
$ git checkout <File or Directory Name> : 해당 파일 혹은 디렉토리를 마지막 커밋상태로 되돌림
$ git checkout <Commit-ID> <File or Directory Name> : 해당 커밋ID 의 상태로 되돌림
git reset
특정 커밋을 취소한다
$ git reset –-hard <Commit-ID> : 커밋ID 에 해당하는 커밋을 취소한다
$ git reset –-hard HEAD^ : HEAD 의 가장 최근 커밋을 취소한다 (복구불가)
$ git reset –soft HEAD^ : HEAD 의 가장 최근 커밋을 취소한다 (복구가능)
git revert
기존의 커밋에서 변경한 내용을 취소해서 새로운 커밋을 만든다
$ git revert <Commit-ID>
$ git revert HEAD : 가장 최근 커밋을 취소하고 새 커밋을 만든다
git merge
브랜치를 현재 브랜치로 합친다
$ git merge <Branch-Name>
git rebase
브랜치의 변경사항을 현재 브랜치에 적용한다
$ git rebase <Branch-Name>
git cherry-pick
특정 하나의 커밋만 rebase 한다
$ git cherry-pick <Commit-ID>
git log
$ git log -10 : 최근 10개의 커밋로그를 보여준다
$ git log –pretty=oneline : 한줄로 보여준다
$ git log --graph : 그래프 형태로 보여준다
$ git shortlog : 짧은로그를 보여준다
git reflog
로컬에 작업된 커밋 로그을 보여준다
git config
$ git config --global user.name “이름”
$ git config --global user.email “이메일주소”
$ git config --global color.ui auto
git diff
해당파일의 Local 과 Remote 의 차이점을 보여준다
$ git diff <File-Name>
git remote
원격 저장소 정보를 확인/설정 한다
$ git remote add origin master <Remote-Repository-Host> : 원격 저장소를 설정한다
$ git remote show <Repository-Name> : 원격 저장소의 정보를 보여준다
$ git remote rm <Repository-Name> : 원격 저장소를 제거한다
$ git remote update : 원격 저장소 정보를 업데이트한다
git blame
코드 라인별로 커밋ID 와 커밋한 사람등의 정보를 보여준다
$ git blame <File-Name>
$ git blame –L 1, 10 <File-Name> : 1~10 라인의 정보를 보여준다
git show
$ git show <Commit-ID> : 특정 커밋ID 의 로그를 보여준다
$ git show <Branch-Name> : 특정 브랜치의 최근 커밋 로그를 보여준다
$ git show HEAD^ : 현재 브랜치의 최근 커밋 로그를 보여준다
git submodule
저장소 안에 또 다른 독립 저장소.
$ git submodule add <Remote-Repository-Host> <Directory-Name> : 새로운 서브모듈을 추가한다
$ git submodule init : 서브모듈을 초기화한다
$ git submodule update : 원격 저장소에서 Checkout 받는다.