git tip

git diff

색깔 넣어서 출력하기
dit diff --color
git diff --color-words

아래처럼 alias로 설정해서 사용한다.
alias gitd='git diff --color'

또는 config 설정

git config --global color.diff auto
git config --global color.diff always


git log

log를 한 줄로 간단하게 보기(title만 보여줌)
git log --pretty=oneline

commit history를 graphical하게 보기
git log --graph

위 두 옵션을 함께 사용하면 log 확인을 한눈에 할 수 있다.
git log --pretty=oneline --graph

이것도 마찬가지로 alias를 만들어서 사용한다.


git stash

[시나리오]
branch에서 새로운 기능을 개발 중인데 긴급한 수정사항이 생겼을 경우.

방법 1. 현재까지 작업한 파일들을 어딘가에 백업해두고 branch를 롤백한다. 그리고 긴급한 수정 사항을 처리한 후 백업해둔 파일들을 다시 가져와서 개발을 진행.

방법 2. 다른 디렉토리에서 현재 배포 버전을 받은 뒤 수정 사항을 처리하고 배포.

이 외에도 몇몇 꼼수가 있겠지만 git stash를 사용하면 간단히 해결할 수 있다.

#현재 작업을 저장해두고 branch를 head로 돌린다.(git reset --hard)
git stash save

#저장되어 있는 stash들 보기
git stash list

#stash를 꺼내와서 적용
#stash들은 stack에 저장된다. 따라서 가장 최근에 save한 stash가 현재 branch에 적용된다.
git stash pop

#git stash pop 과 비슷한 명령어지만 stash list에서 삭제하지 않는다는 점이 다르다.
git stash apply

#필요 없는 stash를 삭제
git stash drop

#전체 stash list를 삭제
git stash clear

git stash pop 을 했는데 conflict가 발생한 경우.
stash list 에서는 그대로 남아 있으므로 수동으로 drop 을 해줘야 한다. 왜 list 에서 삭제하지 않고 남겨두는걸까 생각해보면 남겨두는게 맞다. 문제가 생겼을 때 문제를 처리하고 다시 git stash pop을 할 수 있다.


git rebase

-i (--interactive) 옵션을 사용하자.



git add

-p 옵션을 사용하면 commit을 나눠서 할 수 있다.


git commit

-C <commit> 이전 커밋 메시지를 그대로 사용한다.

-c <commit>  -C 옵션과 비슷하지만 커밋 메시지를 수정할 수 있다.

--amend
바로 이전 commit에 현재 변경사항을 합친다. 방금 commit 했는데 뭔가 빠뜨렸을 경우 유용하다. commit history를 수정하는 명령이므로 주의해서 사용해야 한다.

git rm

--cached <filename> git에서는 삭제하지만 로컬파일시스템에서는 삭제하지 않음

git mv

--force 파일 이름 변경시 대소문자 구분이 안될때가 있는데(맥에서?) 그 때 force 옵션을 주면 된다.

댓글

이 블로그의 인기 게시물

미적분과 차원

자바 로깅

apache rewrite_module 로그