자주쓰는 GIT 명령어 정리
by Jeongjin Kim
가져오기
- 리모트에 있는 브랜치를 Local로 가져오면서 브랜치 만들기
git checkout -b <생성할Local브랜치이름> <원격브랜치이름>
- 다른 브랜치에서 일부 파일만 가져오기
git checkout --patch <가져올브랜치이름> <가져올 파일이름>
y-stage
n-no stage
a-stage all hunk
합치기
- merge 시작
git mergetool
- Rebase 계속
git rebase --continue
- 선택한 커밋만 합치기. -n 옵션 stage 상태로. 없으면 commit됨
git cherry-pick -n <커밋id>
파일 삭제
- Untracked file 과 디렉토리 한번에 삭제.
--dry-run
옵션 넣어서 지울 파일 한번 확인해보고 하자git clean -fd
되돌리기
- 커밋id로 되돌림. 작업 했던 것은 안 날라감. 최종 수정 했던 상태로 남음
git reset <커밋id>
- 커밋id로 되돌림. 작업했던 것 모두 없어짐
git reset --hard <커밋id>
- 마지막 커밋 취소. 작업했던 것 모두 없어짐
git reset --hard HEAD
- Untracked로 만들기. 변경한것 남음
git rm --cached <file>
- 선택한 파일의 수정사항을 원래대로 되돌림. Stage된것과 새파일은 그대로 있음
git checkout -- <file>
- 수정된 모든 파일을 원래대로 되돌림
git checkout -- .
- untracked로 만들기
git rm --cached <file>
브랜치 삭제
- 리모트 브랜치 삭제
git push origin --delete <branch>
- 로컬 브랜치 삭제
git branch -d <branch>
올리기
- tag 리모트로 올리기
git push origin --tags
현재 작업중인 것 임시 저장
- 현재 변경 사항 저장
git stash
- 저장했던 것 복원
git stash pop
브랜치 조회
- 로컬과 리모트에 있는 모든 브랜치 조회
git branch -a
리모트 히스토리 정리(브랜치를 삭제했는데 남아 있을 때)
- 이미 리모트에서 삭제된 브랜치를 정리한다
git remote prune origin
비교하기
- difftool을 이용해서 현재 branch와 다른 브랜치 비교
git difftool <branch> git difftool <branch> *.jsp
- difftool을 이용해서 커밋 간 비교
git difftool <commit1> <commit2>
최초 설정
- 히스토리 조회를 그래프로 표시
git config --global alias.lt "log --oneline --decorate --graph --all"
- 머지툴 설정
git config --global merge.tool winmerge
- Visual Studio Code 를 기본 에디터로 사용
git config --global core.editor "code --wait"
숨기기
- 트랙킹 중인 파일인데 로컬에서만 변경사항을 무시하기
git update-index --assume-changed [파일들]
- 트랙킹 중인 파일인데 로컬에서만 변경사항을 무시한것 해제하기
git update-index --assume-unchanged [파일들]
- 숨긴 파일 보기
git ls-files -v | grep "^h"
인증오류
- remote: HTTP Basic: Access denied 발생시 시도해볼만 한 것
git config --system --unset credential.helper
참고사항
HEAD
마지막 커밋 스냅샷, 다음 커밋의 부모 커밋, 현재 브랜치 마지막 커밋의 스냅샷
Index
다음에 커밋할 스냅샷
워킹 디렉토리
샌드박스
reset
HEAD를 옮긴다 커밋만 옮김 => git commit 을 취소
git reset --soft HEAD~
커밋을 옮기고 index에 올라간것도 내림 => git commit 과 git add 를 취소
git reset [--mixed] HEAD~
커밋을 옮기고 워킹디렉토리 내용도 지운다
git reset --hard HEAD~
Subscribe via RSS