Dogit

git 자료 정리소, do-git

Download .zip Download .tar.gz View on GitHub

Git 사용자를 위한 커뮤니티 인덱스 페이지.

이 프로젝트 이름은 두깃으로 읽는다.

한글로 번역된 자료가 있으면 영문 링크는 생략하고 한글 링크만 달았다.

읽을거리

Git과 관련된 읽을거리를 모았다.

책, 가이드

conf

브랜치 사용법(Workflow)

git은 브랜치 사용법이 매우 중요하므로 브랜치 사용법과 관련된 자료를 따로 모았다.

나머지 git 사용법

@semtlnori님 git 연재.

뒷이야기

SSH

Set Up Git

githup:help에 있는 Set Up Git. Windows, Mac, Linux 환경에서 사용하는 설정 방법이 잘 설명돼 있다.

keychain

터미널에서 ssh-agent를 사용할 때 유용하다. ssh-agent를 직접 사용하는 것보다 keychain를 사용하는 것이 더 편리하다. 사용방법은 keychain for ssh login에서 설명한다.

keychain이 없다면 1.7.10 부터 지원하는 패스워드 캐싱 기능을 사용하는 것도 괜찮다.

CLI

CLI 사용 시 유용한 자료.

dotfiles

무려 github에서 관리하는 프로젝트로 dotfiles에 가면 자세한 설명이 나와 있다. git뿐만 아니라 다양한 앱에서 사용하는 dotfile이 정리돼 있다.

bash-it

bash-it은 bash 환경에서 유용한 프레임워크다. git, git-flow 명령어 자동완성, 프롬프트 테마 등 bash 환경에서 필요한 스크립트들이 모두 들어 있다. 다음은 bash-it의 zork 테마를 적용한 프롬프트 화면이다:

bash-it-zork

프로젝트를 포크해서 github에 올려놓으면 여러 서버에서 같은 환경으로 작업할 수 있다. bash-it을 포크 해두고 linux, mac 환경에서 동일한 bash 프롬프트와 개발환경을 설정해 사용할 수 있다. bash-it은 확장하기 쉬운 구조로 돼 있기 때문에 나에게 필요한 bash 스크립트를 github 저장소에 등록해두고 사용하기도 좋다.

oh-my-zsh

bash-it과 마찬가지로 zsh에서 유용한 프레임워크다. bash-it은 이 oh-my-zsh을 보고 따라 만든 것이다. bash-it과 마찬가지로 git, git-flow 명령어 자동완성, 프롬프트 테마 등 zsh 환경에서 필요한 것이 들어 있을 것이다.

prezto

zsh 프레임워크로 oh-my-zsh보다 관리가 잘되고 있는 것 같다. 나는 bash-it을 사용하다가 oh-my-zsh로 변경했다가 prezto를 발견해서 prezto로 바꿨다.

msysgit

Window 사용자라면 msysgit을 사용하고 있을 텐데 @gypark님의 Git을 반드시 읽어봐야 한다. msysgit 사용자가 고생하는 한글 문제, 멍청한 cmd 터미널 문제 등을 고민하고 실험하고 정리하였다. 그리고 그것을 공유해 주었다. 그 외 difftool 설정하고 고르는 방법 등 msysgit을 사용하려면 이 글이 꼭 필요하다.

hg-git

hg-git

http://hg-git.github.com/ - mercurial to git bridge

git config

기타설정.

git config --global user.email "me@here.com"
git config --global user.name "Billy Everyteen"
git config --global color.ui 1

git alias

git alias 명령으로 간단한 단축 명령을 만들 수 있다. 다음과 같이 등록해서 쓰면 편리하다:

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.unstage 'reset HEAD --'
git config --global alias.cs "commit -s"
git config --global alias.amend "commit --amend -C HEAD"
git config --global alias.undo "reset --soft HEAD^"
git config --global alias.count "shortlog -sn"
git config --global alias.credit '!f() { git commit --amend --author "$0 <$1>" -C HEAD; }; f'
  • git credit "Changwoo Park" pismute@gmail.com - 최근 커밋의 author 수정
  • git count - 커미터 통계
  • git undo - 이전 커밋으로 돌리고 staged 상태로 만든다.
  • git amend - 최근 커밋을 수정. 커밋 메시지는 수정할 수 없다. 커밋 메시지를 수정하려면 git undo;git commit이나 git commit --amend

git log

다음과 같이 등록하면 커밋 로그 하나가 한 줄로 나온다:

git config --global alias.lg "log --name-status \
  --color --abbrev-commit --date=relative --graph \
  --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset \
    %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'"

git lg라고 실행하면 다음과 같이 나타난다:

alias.lg

보면 알겠지만, 매우 보기 편하다. 커밋하나가 한 줄로 나올 뿐만 아니라 각 브랜치가 가리키는 커밋도 함께 표시된다. 그리고 그 커밋에서 어떤 파일을 수정했는지도 보여준다.

lg로도 읽을 수 없는 히스토리라면 gitx같은 GUI 도구를 사용하는 것이 좋다.

git mergetool, git difftool

GUI

유용한 GUI 도구들

기타 프로젝트

gitignore

gitignore 프로젝트는 .gitignore 파일에 대한 템플릿 프로젝트다. 무려 @github에서 관리하고 로컬에 Clone 해두면 매우 편리하다. 각 OS, 에디터, 개발도구, 언어에 따라서 다양한 .gitignore 파일 템플릿이 담겨 있다.

자세한 것은 gitignore 방법에 대한 글을 살펴보기 바란다.

git-tles

git-tles@pismute님이 만들어서 사용하는 프로젝트 간단한 스크립트로 해당 저장소에 대해서 git fetch를 하고 Fastforward-Merge가 가능한 브랜치가 있으면 Merge하는 git ff 명령과 브랜치 정보를 요약해서 보여주는 git todo 명령이 들어 있다.

git ff는 간단히 fetch할 때 Fast-forward될 수 있는 브랜치는 그냥 자동으로 Merge한다. Merge나 Rebase가 필요하면 수동으로 할 수 있도록 알려준다.

git todo는 브랜치 정보를 요약해주는 도구로 로컬 브랜치와 원격 브랜치를 나눠서 볼 수 있다.

git-extras

git-extras@visionmedia님의 git 확장 프로젝트다. 구현된 게 매우 많고 가끔 이런 게 있으면 좋을 텐데라고 생각날 만한 것이 들어 있다. 어떤 것이 있는지 한번은 살펴보길 바란다.

참여

추가하거나 수정할 게 있으면 Pull Request를 보내주거나 저장소에 이슈를 남겨주세요.