깃헙 위키에 작성해봤습니다. 이 페이지도 그에 맞춰서 조금 수정하도록 하겠습니다.
목차
소개
- git을 이해할 때 중요한 것은 local repository 와 remote repository 다.
- git은 별도의 버전관리서버가 없어도 로컬 환경에서 소스버전을 관리할 수가 있다. 그리고 필요에 따라서 remote repository에 연결 및 저장할 수 있다.
- git은 거의 모든 명령을 로컬에서 실행한다.
- 기존의 CVS, SVN 과 비교했을 때 월등한 속도차를 보인다. 이는 모든 명령이 로컬 파일과 데이터만을 사용하기 때문이다. 로컬 환경에서도 소스를 커밋Commit하고 그 기록History들을 살펴볼 수 있다는 장점을 가지고 있다.
- 기존의 CVS, SVN 과 비교했을 때 월등한 속도차를 보인다. 이는 모든 명령이 로컬 파일과 데이터만을 사용하기 때문이다. 로컬 환경에서도 소스를 커밋Commit하고 그 기록History들을 살펴볼 수 있다는 장점을 가지고 있다.
- 로컬에서 실행되는 환경 덕분에 어느 곳에서도 작업한 내용을 커밋할 수 있고, 네트워크가 연결되었을 때 remote repository에 소스를 Push 할 수 있다.
- ㅡ_-); 어디서든 일할 수 있는 최적의 환경을 구축할 수 있다는 단점이 있다. 주말에도, 세미나나 컨퍼런스에 가서도 일하고 있는 내 모습이란.. Orz…
- ㅡ_-); 어디서든 일할 수 있는 최적의 환경을 구축할 수 있다는 단점이 있다. 주말에도, 세미나나 컨퍼런스에 가서도 일하고 있는 내 모습이란.. Orz…
- git에 대해 더 자세히 알고 싶은 분은!!
- Progit2 한글판 을 내려받아서 읽으시면 됩니다.
기존의 소스 및 이슈관리
- 서버 운영환경
- 클라우드 서비스 : 서버호스팅(한달 9.9만원) 사용
- 운영체제 : 우분투 10.04
- 운영 웹서버 : Bitnami TomcatStack(7.0) 사용
- 빌드 및 배포 : Maven 과 Jenkins 사용
- 버전관리 : SVN 사용
- 이슈관리 : redmine(http://www.redmine.org) 사용
github 사용계기
- 개발 초창기, 고객사에 ’시연’해야하는 상황 발생
- 개발이 한창 진행되는 중에 관심을 가진 고객사에 ’시연’을 하기 위해서 시연을 위한 준비와 개발을 동시에 진행해야 하는 상황이 발생했음. 소스 가지치기branch 실시! 소스를 분리하는 것은 어렵지 않게 했음
- 개발이 한창 진행되는 중에 관심을 가진 고객사에 ’시연’을 하기 위해서 시연을 위한 준비와 개발을 동시에 진행해야 하는 상황이 발생했음. 소스 가지치기branch 실시! 소스를 분리하는 것은 어렵지 않게 했음
- ’시연’을 마친 후 소스를 합치기Merge하는 과정에서 문제가 발생
- 합치기 너무 어려워!
- git을 쓰면 가지치기branch와 합치기가 쉽다더라~
- github 써봤는데 괜찮더라(팀원들 중 일부는 스터디에서 github을 이미 활용하여 개발하고 있었다).
- 회사에서 개발하고 있는 솔루션이니까 외부에 노출되면 안된다.
- private repository(유료)를 사용하면 된다.
Github private repository
Github private repository 가격정책
Enterprise 가격정책은 또 다르다.
- Github enterprise : https://enterprise.github.com/
접근권한이 없는 사용자가 특정 private repository에 접근했을 때
존재하지 않는 페이지(Repository, 404 page not found)라고 나온다.
프로젝트 내에서 Github 사용방식
- 개발자들 전원 MacBook Pro 사용, 동일한 개발환경을 유지하고 있어서 환경설정이 용이함
- 터미널에서 git 관련 명령어를 치는 건 번거로운 일이다!
- SourceTree(http://www.sourcetreeapp.com/) 사용하면 그럴 필요가 없다!
- GUI 내에서 손쉽게 commit, push, branch, merge 가 가능함
- Local branch
- merge
- remove local branch
- Remote branch
- merge
- remove remote branch
- 소스의 통합과 분기에 대한 확인이 용이함
- github 웹페이지에서도 소스를 확인하거나, 커밋된 내용을 확인하기 편리함
- familly tree
Tag 사용법
- 태그를 처음 써봤습니다(20121101).
- 아무 생각없이 태그를 사용해놓고 현장에 와서 소스를 내려받는데 식겁했습니다(20121102).
- 찬찬히 살펴보니 제가 20121101에 태그를 걸어놓은 파일이 받아지더군요.
- 그래서 재빨리 새로운 태그를 만들고 다운로드 받아서 처리했습니다.
- Tag 설정을 해놓지 않는 경우에는 선택된 설정값을 기반으로 해서 github에서 압축파일을 만들어 다운로드를 시작합니다. 시간이 좀 걸립니다.
- Tag 설정을 해놓으면, 설정하는 순간의 소스파일을 압축해서 클라우드 시스템에 저장해 두기 때문에 훨씬 빠르게(바로!) 소스파일을 내려받을 수 있습니다.
- 이 Tag를 어떻게 활용할 수 있을까요? ^^
- 이정표
- 스프린트 마다 진행된 소스 결과물(산출물?)
프로젝트 내에서 이슈 관리
- repository - admin : [Features] Wikis, Issues 체크
- 위키에서 사용하는 마크다운에 대한 내용 : https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet
- 메뉴 변화
- Issues
- Issues[Open issues/Closed Issues]
- Milestones
- Issue Assign
- 이슈에 할당된 사용자에게는 comment 가 추가될 때마다 메일이 발송됩니다.
- Labels
- Issue Link
github + git-flow
- git-flow를 활용한 workflow : http://nvie.com/posts/a-successful-git-branching-model/ - git-flow에 대한 workflow를 이해할 수 있는 문서임
- github과 git-flow를 사용한다면 HubFlow도 좋은 선택이라 생각한다.
내부망에서 사용하기
공공기관등 보안으로 인한 인트라넷 ..내부망에서 사용 할 수 있나?
김지헌 : 인트라넷의 서버에 Git Repository Server를 설정해두면 사용할 수 있을 겁니다.
저는 사용한 경험이 없어서 뭐라고 말하기는 어렵군요.
- Git Repository Server 설정 참고
- git server repository 환경 구성하기
- How to set up your own private Git server on Linux
참고자료
- Github [https://github.com/]
- Github private plans [https://github.com/plans]
- Github wiki markdown [https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet]
- bitnami [http://bitnami.org/]
- jenkins [http://jenkins-ci.org/]
- redmine [http://www.redmine.org/]
- SourceTree [http://www.sourcetreeapp.com/]
- SpringSource / spring-framework [https://github.com/SpringSource/spring-framework]
- Git User’s Manual (for version 1.5.3 or newer) [http://www.kernel.org/pub/software/scm/git/docs/user-manual.html]
- Git cheat sheet pdf [git_cheat_sheet.pdf]