Git 처음 생성
로컬생성
git init
원격 레포지토리에서 복사
git clone 주소 폴더명
Git 기본 명령어
Index에 새 파일 올림
git add 파일명
커밋
git commit 화일명 -m "메세지"
원격저장소에 커밋한 데이타 보내기
git push
원격 저장소에서 데이타 받아오기
git pull
Git 기본
지정한 커밋의 로그메세지를 수정
git commit -C HEAD -a --amend
변경내용 되돌리기
git checkout -- 파일명
인덱스에 스테이징한거 취소(add한거)
git reset HEAD <file>
터미널에서 컬러로 나오게
git config --global color.ui "true";
환경변수보기
git config --global --list
임시보관
working copy영역의 파일을 일시적으로 저장하여 working copy영역 클린
(아직 커밋하면 안되는 작업중에 pull받아야하는데 그때 충동이 일어날경우)
git stash
git stash pop //복구
git stash apply //스태시에서 제거하지않고 복구
git stash list
git stash show stash이름
브랜치
브랜치 조회
git branch
새브랜치
git branch 브랜치명
브랜치 삭제
git branch -d 브랜치명
브랜치 이름변경
git branch -m 옛 브랜치명 새로운브랜치명
태그붙이기
git tag 태그명 브랜치명
해당브랜치나 태그로 체크아웃
git checkout 브랜치명/태그명
해당 브랜치를 현재 브랜치로 합침
git merge 브랜치명
해당 브랜치의 변경사항을 현재 브랜치에 적용
git rebase 브랜치명
로그관리
해당 파일의 마지막 변경 상세 이력을 볼수있다.
git blame 파일명
이전 커밋 취소
git reset 커밋명
최근1개의 커밋취소
git reset HEAD
변경사항무시 마지막커밋 복구
git reset --hard HEAD
커밋상세 정보를 보여준다.
git show 커밋주소
소스비교
워킹 트리 > 인덱스
git status : 워킹트리에서 아직 인덱스에 add되지 않은 파일내역
git diff : 워킹 트리와 인덱스간 소스내용 차이점
git diff <파일> : 해당 파일에 대한 워킹트리와 인덱스간 소스내용 차이점
인덱스 > 로컬 브랜치
git status : 인덱스에서 아직 commit되지 않은 파일내역
git diff --cached : 인덱스와 로컬브랜치(HEAD) 간의 차이점. "commit" 명령을 수행할 경우 반영되는 내용들
워킹 트리 > 로컬 브랜치
git diff HEAD : 워킹 트리와 로컬 브랜치(HEAD)의 소스내용 차이.
마지막 commit 이후 변경사항. ("commit -a" 명령을 수행할 경우 반영되는 내용들)
git diff HEAD -- <파일> : 해당 파일에 대한 워킹트리와 마지막 commit 이후의 소스내용
워킹 트리 > 리모트 브랜치
git diff FETCH_HEAD : 워킹 트리와 리모트 브랜치(FETCH_HEAD)의 소스내용
git diff FETCH_HEAD -- <파일> : 해당 파일에 대한 워킹 트리와 리모트 브랜치 소스내용
로컬 브랜치 > 리모트 브랜치 : Outgoing Changes
git log FETCH_HEAD.. : 로컬 브랜치에서 리모트 브랜치에 반영할 변경내역(커밋기록)
git diff FETCH_HEAD... : 로컬 브랜치에서 리모트 브랜치에 반영할 소스 변경내용
리모트 브랜치 → 로컬 브랜치 : Incoming Changes
git log ..FETCH_HEAD : 리모트 브랜치에서 로컬 브랜치로 가져와야할 변경내역(커밋기록)
git diff ...FETCH_HEAD : 리모트 브랜치에서 로컬 브랜치로 가져와야할 소스 변경내용
원격저장소
원격저장소의 변경사항을 가져와서 브랜치를 갱신
git fetch
새로운 원격저장소 추가
git remote add 이름 저장소주소
원격 저장소 목록확인
git remote
해당 원격저장소의 정보 확인.
git remote show 이름
원격저장소를 제거.
git remote rm 이름
원격저장소 브랜치로 로컬 브랜치 생성
git checkout 원격브랜치명 - git new version
git branch 로컬브랜치명 origin/원격브랜치명
개별파일 원상 복구
워킹트리의 수정된 파일을 index(staging area)에 있는 것으로 원복
git checkout -- <파일명>
워킹트리의 수정된 파일을 HEAD에 있는 것으로 원복(--는 생략가능)
git checkout HEAD -- <파일명>
워킹트리의 수정된 파일의 내용을 FETCH_HEAD에 있는 것으로 원복(--는 생략가능)
git checkout FETCH_HEAD -- <파일명>
index 추가 취소
해당 파일을 index(staging area)에 추가한 것을 취소(unstage).
워킹트리의 변경내용은 보존됨 (--mixed 가 default)
git reset -- <파일명>
git reset HEAD <파일명>
commit 취소
최종 커밋을 취소. 워킹트리는 보존됨. (커밋은 했지만 push하지 않은 경우 유용)
git reset HEAD^
마지막 2개의 커밋을 취소. 워킹트리는 보존됨.
git reset HEAD~2
마지막 2개의 커밋을 취소. index 및 워킹트리 모두 원상복귀.
git reset --hard HEAD~2
머지한 것을 이미 커밋했을 때, 그 커밋을 취소. (잘못된 머지를 이미 커밋한 경우 유용)
git reset --hard ORIG_HEAD
HEAD에서 변경한 내역을 취소하는 새로운 커밋 발행(undo commit).
(커밋을 이미 push 해버린 경우 유용)
git revert HEAD
워킹트리 전체 원상복귀
워킹트리 전체를 마지막 커밋 상태로 되돌림.
마지막 커밋이후의 워킹트리와 index의 수정사항 모두 사라짐.
(변경을 커밋하지 않았다면 유용)
git reset --hard HEAD