GIT(깃)
git은 리누즈 토르발즈가 개발한 분산버전관리 시스템이다. 리눅스의 소스코드를 관리하기 위해서 만들었는데 성능이 너무나 뛰어나서 전세계에서 사용될 정도이다. 분산버전관리 시스템이기 때문에 중앙서버가 없어도 잘 동작하며 혹시 저장소중 한곳이 날아가더라도 단순히 로컬에 있는 것을 재 업로드 하면 복구가 가능하기 때문에 소스코드를 잃어버리기 극히 어렵다.
설치방법
- http://git-scm.com/downloads
- 혹은 각 배포판별로 패키지 관리자를 이용1
튜토리얼 & 참고자료
Plugins
- passport - 커밋시 커미터 이름과 이메일을 변경할 필요가 있다면 강추. 커밋하는 이름과 이메일을 손쉽게 변경하게 해준다.
- ignore - .gitignore 파일을 손쉽게 만들수 있게 해준다.
Tips
- git 저장소가 너무 커서 못받는다면 (ex. 안드로이드 소스코드)
git clone --depth 1
을 사용하면 히스토리는 받지 않는다. 이를 shallow clone이라 한다. - git의 branch 스타일에 de-factor는 git flow이다
- git inital commit을 빈커밋을 하고 싶을 떄가 종종 있다. 그럴때는
git commit --allow-empty
를 사용하면 된다. 물론 첫커밋이 아니더라도 쓸수 있다. - git diff를 vimdiff로 사용하기
- git에서 공통 조상을 찾고 싶을때는
git merge-base
를 쓰면 된다. - 특정 커밋이 포함되어 있는 태그를 찾을때는
git tag --contains
를 쓰면 된다.- 브랜치를 찾을때는 당연히
tag
를branch
로 바꾸면 된다.
- 브랜치를 찾을때는 당연히
- git add 시에 파일 단위가 아닌 라인 단위로 추가할 내용을 정할수 있다.
--edit
옵션을 사용하면 된다. 다만, chuck 를 직접 수정해야 하기에 사전지식이 필요하다.- 편집후 적용이 잘 안될때는 각 라인 맨처음에 공백을 잘확인 해야 한다. 변경을 적용하지 않기 위해서는 +- 를 공백으로 바꾸어야 하는데 단순히 지워버리면 적용이 안된다.
- 두 commit 의 공통 조상 찾기
git merge-base
See Also
- 리눅스라면 git을 패키지 관리자에 넣어두지 않았을리 없다.