GIT가 SVN과 비슷하다 하드만... 도저히 감이 안잡힌다. 뭐 이런게 다 있나 싶을정도로....
몇일간의 웹서핑과, Local에서의 테스트로 얻은것들을 정리한다.
이제 초기 작업을 위한 내용파악이 된 상태지만, 머지 않아 내가 Local에서 마음대로 쓰기에 불편하지 않을 정도가 될 것같다. (@.@ 뭐시라???)
이 문서는 기존의 Repository에서 GIT로 다운받은 후 Local에서 버전관리 하기 위한 시작단계의 내용들이다.
Sample은 u-boot 코드를 이용하였다.
Test환경은 Cygwin 상에서 이루어 졌으며, Linux상에서도 아무 문제 없이 될 듯하다.
아직은 Linux보다는 윈도우에 설치된 Cygwin이 내 입맛에는 맞는 듯하다.
1. Repository에서 GIT로 다운 받기
>> cd repos
>> git clone git://git.denx.de/u-boot.git
혹은
>> git clone http://git.denx.de/u-boot.git
를 실행하여 u-boot를 다운받는다.
<결과>
앞으로 local에서 사용할 GIT의 Repository이다.
/home/git-repos/u-boot 폴더에서 git log, git tag -l, git branch 등을 이용하여 GIT의 정보를 마음껏 확인할 수있다.
2. Work Project를 생성하자.
/home/git-repos 폴더에서
이제 작업할 Base 버전을 선택하고 Branch를 만들자.
물론 Main에 저장해도 상관은 없겠지만, Original Source가 내가 만든 것이 아니므로....
Tag 와 Branch를 확인해보자.
v1.3.4
v1.3.4-rc1
v1.3.4-rc2
v2008.10
v2008.10-rc1
v2008.10-rc2
v2008.10-rc3
...
다운받은 u-boot코드는 master가 하나 딸랑 보이고 앞에 '*'가 붙어 있다. 이놈이 SVN의 trunk에 해당하는 듯 하다.
'*' 는 현재 사용되는 branch를 가르킨다.
이제, 내가 원하는 TAG의 코드로 나만의 branch를 생성시켜보자.
생성 명령은 checkout 이고, Branch 생성은 -b new 이다.
다시한번
>> * mybranch
branch를 생성하긴 했는데, 코드를 다른 놈을 Base로 쓰고 싶단다. 그럼 어떻게 하나????
근데... 요렇게 작업하다가 master로 돌아가고 싶으면????
음... 요기까지는 아직 검토안해봤다. Branch의 이동명령... 왠지 그런 것도 될 것만 같은...
쩝... 암튼.. 겁나 편한 거 같기는 한데 아직은 잘 모르겠다.
Commit이랑 History관리 등등은... 기약없이 다음으로 .....
더 자세한 사항은 http://git-scm.com/ 의 Document를...
웹으로 부터 clone한 폴더를 로컬 서버로 다시 clone한 다음 부터 진행하도록 한다.
/home/git-repos 폴더에서
>> git clone u-boot /home/work/u-boot
1. 사용자 등록
우선, 사용자 등록을 하도록 하자. name 과 email을 이용하여 git에게 사용자를 알려주게 된다.
>> git config --global user.email mymail@email.addr
>> git config -l
user.name=myname
user.email=mymail@email.addr
...
2. Branch 가지고 놀기
어쨌든 다운 받은 코드에서 Branch를 이용해보자. 생성 삭제 등등이 너무나 자유로워서 내마음대로 가지고 놀아도 괜찮을 듯하다.
1) Branch 생성
or
이처럼 두가지 방법으로 Branch 생성이 가능하다.
첫번째는 mybranch라는 이름의 branch를 생성하기만 한다. 즉, 현재 branch는 mybranch를 생성하기전의 branch가 되는 것이다. 지금은 master이다.
두번째는 간단 사용기 1에서도 사용했던 것 처럼 mybranch를 생성과 동시에 현재 branch를 mybranch로 변경하는 것이다. [TAG]를 사용할 경우 해당 TAG를 default code로 사용하게 되며, [TAG]를 입력하지 않을 경우 mybranch를 생성하기 직전의 코드를 default로 사용하게 될 것이다.
2) Branch 변경 및 삭제
>> git branch -d mybranch
checkout 은 현재 소속을 변경하는 역할을 한다. 명령을 이용하여 해당 branch로 변경할 수있다. 또한 생성된 branch를 삭제하고 싶으면 branch의 -d 옵션을 사용하면 된다.
등록되어 있는 모든 branch를 확인하고 싶으면 그냥 git branch를 입력하면 된다.
3) branch에서 작업한 내용을 병합하기 (Merge)
- mybranch에서 작업을 한 이후 commit를 이용하여 변경사항을 적용한다. 추가된 사항이 있다면 add 명령을 이용하여 추가해야 할 것이다.
- 변경사항이 저장되었으면, 머지될 branch로 돌아가자. 우선은 master에 머지하는 것으로 하겠다.
행여나 master 가 변경되어야 할 사항이 있다면 commit부터 하도록하자.
>> git commit -a
>> git merge mybranch
만약 충돌 사항이 없다면 제대로 된 것이다. 충돌이 있을 경우 diff명령을 이용하여 충돌을 확인 후 수정 및 commit를 하면 된다.
diff 명령은 새롭게 추가된 파일중 add가 수행되지 않은 파일도 보여준다. 충돌 사항을 확인 하기에는 번거로운 경우이다. 이를 피하기 위해 --cached 옵션을 사용하자. 서버에 등록된 코드의 변경사항만 보여준다.
>> git diff --cached
>> git status
status 명령은 작업 프로젝트의 간단한 변경사항들을 알려준다.
4) 작업완료된 분기 삭제하기
- 변경 사항이 모두 적용되었고 더이상 branch가 사용되지 않는 다면 위의 삭제 명령을 이용하여 과감히 버리자.
더 자세한 사항은 http://www.kernel.org/pub/software/scm/git/docs/user-manual.html 의 GIT user manual이나 http://git-scm.com/ 의 Document를...
'Programming' 카테고리의 다른 글
참고용..mysql 명령어 - 퍼옴 (0) | 2009.06.22 |
---|---|
Window Mobile (CE)에 QtWebkit 올리기 (0) | 2009.06.01 |
fatal error LNK1106: invalid file or disk full : cannot seek to 0x53636DD1 (1) | 2009.04.30 |
VS2008 에서 Smart Device 프로젝트 생성이 안되는 경우 -IE8 설치후 발생 (0) | 2009.04.09 |
MS 소스 공유 라이선스 (0) | 2008.11.19 |