최근 오프소스들은 모두 git 를 이용해서 관리되고 배포됩니다.

우리네들은 받아서 고맙게 쓰고 있습니다.


그런데 git는 개인적으로 소스를 관리하는데에도 매우 도움이 됩니다.

특정 업체에서 배포한 소스를 갖고 작업하는데 그냥 타 업체에서 관련된 작업의 

수정사항을 보내 달랍니다.

이전에 보내준 소스와 작업한 소스를 diff 떠서 보내자니 소스가 큰 경우 clean 해야죠

diff 뜨면 겁나게 많이 나옵니다.(커널 소스는 빌드시 날짜도 들어가고 암튼 겁나게 많이 나옵니다.)

실제 제가 수정한 것은 뭐 파일 몇개 밖에 안되는데도요.


이런 경우에도 git 로 관리하고 있었다면 그냥 명령어 한줄로 지난번에 작업한 것부터 패치를

쭈욱 만들수 있습니다.


이 글은 제가 git를 처음 공부하면서 이전에 cvs,svn 에서 하고 있던 일들을 git 에서는 어떻게 할까

하면서 그 중요 명령어들과 git 에서 매우 유용한 기능에 대한 명령어를 소개합니다.


1.1 기본 설정

git config --global user.name "boggle70"

git config --global user.email "boggle70@falinux.com" 

        이것을 하면 패치 파일 만들때 누가 만들었는지 자동으로 넣어 줍니다.

1-2 초기 생성

1-2.1 가져오기

원격 브랜치 혹은 웹에서 가져오는 경우(커널의 경우를 예로 든다)

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

1-2.2 내가 최초 생성하기 git init

1.3 메인 트리 생성(branch)

git init 이후에 기본 브랜치는 master  이다


1.4 태그 생성

git tag xxxxxxxxxx

1.5 파일 추가/삭제, 이동 명령

git add 

git add . : 현재 디렉토리에 있는 파일중 .gitignore 에 있는 파일을 제외하고 모두 추가된다.

git add xxxxxxx           : 원하는 파일만 추가된다.

git rm  xxxxxxx : 원하는 파일이 삭제된다.

git mv  xxxxxxx : 원하는 파일이 이동된다.


1.6 commit 하기

git commit -a :  변경 이력 모두를 커밋한다.  이후에 저장할 메세지를 저장하는 페이지가 나타난다.

   이때 저장하는 메세지의 명확한 의미를 확실히 하자.

   이후에 로그 이력으로 변화를 조사하는데 도움이 된다.

git commit -a -m "commit log" : 별도의 로그 페이지 없이 메세지를 추가하고 바로 커밋한다.

  git commit -a 보다 이 명령어를 사용할 것을 권한다.

1.7 새로운 브랜치 생성

git branch newbranch : 새로운 브랜치 생성

1.8 작업하던 브랜치 머지하기

새로운 만들어 작업하던 브랜치를 마스터 브랜치에 적용하고 싶을때

먼저 새로 만든 브랜치의 모든 내용을 커밋한다.(커밋하면 태그도 만들자)


git commit -a -m "Mantis issue 1234567 newwork down issue fixed"

git checkout master

git merge [작업하던 브랜치 이름]

        git tag ver.xxx.xxx.xxx

1.9 패치 파일 만들기/적용하기

git foramt-patch -1 : 방금 커밋한 내용에 대해서 패치파일 형태로 만들어준다.

git am [패치 적용할 파일 이름] : 원하는 패치를 적용한다.


1.10  원격서버에서 업데이트 받기/하기

       git pull         : 업데이트 받기

       git push       :  원격지로 내 변경을 적용하기



!!!매일 매일 변경사항을 백업하기 위해서 전체 소스를 tar 로 묶고 계십니까?

      커밋하고 태그를 붙이세요


전체 소스 보내달라고 하면 .svn 찾아서 모두 지우고 압축하십니까?

      .git 디렉토리 지우고 압축하세요


git에 대해서 받은 느낌은 gnu 툴을 이용해서 작업하는 사람에게는 최상의 툴입니다.

특히 커널 작업이나 드라이버 작업하시는 분들에게는요(아 토발즈씨가 이거 만들었답니다)


아!!!   윈도우 유저신가요?  tortoisegit 를 이용하세요

저는 데스크탑이 우분투라 윈도우에서의 사용법은 도움을 드릴수 없습니다.

기본적으로 tortoisesvn 과 인터페이스가 동일하다는 것만 알고 있습니다.


이 정도만 익히시면 기본적으로 git를 관리하시는데 문제가 없을 겁니다.

더 자세한 사항은 git 관련 한글책(!!!)도 있습니다.

아니면 구글링을 하시면 엄청 많습니다.