• 참고 : A successful git branching model

  • 깃git의 기본 브랜치는 master에서 시작합니다.

  • master는 태그Tag를 기록하기 위한 기본브랜치로 사용됩니다.
  • 개발을 위해서는 develop 브랜치를 생성합니다.

    개발자들이 실제로 소스코드를 공유하는 브랜치가 됩니다.

    //master 브랜치에서 develop 브랜치를 생성합니다.
    (master)$ git checkout -b develop
    (develop)$
    
  • 소스코드를 push하기 전에 하는 기본적인 동작방식은 다음과 같습니다.

    1. 소스코드를 스태징 상태로 변경
      (develop)$ git add .
      
    2. 소스코드를 커밋함 - 가급적이면 개발한 내용을 상세기록하시는 걸 추천함
      (develop)$ git commit
      이후 커밋메시지 등록
      //혹은
      (develop)$ git commit -m '소스코드 중 친구목록 반환시 기준변경'
      
    3. 원격저장소(remote repository)에서 당겨오기(pull)
      (develop)$ git pull origin develop
      
    4. 별다른 충돌conflict가 발생하지 않았다면 push
      (develop)$ git push origin develop
      
  • 기능개발시 브린치 생성

    1. 브랜치 생성 - 웹 애플리케이션 설정을 하는 단계의 브랜치
      (develop)$ git checkout -b feature/web-application-config
      (feature/web-application-config)$
      
    2. 소스코드 변경작업 후 스태징 상태로 변경
      (feature/web-application-config)$ git add .
      
    3. 소스코드 커밋
      (feature/web-application-config)$ git commit -m '웹 애플리케이션 설정완료 web.xml 등 설정'
      
    4. develop 브랜치로 체크아웃
      (feature/web-application-config)$ git checkout develop
      (develop)$
      
    5. feature/web-application-config 브랜치 병합merge
      (develop)$ git merge feature/web-application-config
      
    6. feature/web-application-config 브랜치 삭제
      (develop)$ git branch -d feature/web-application-config
      

이런 형태로 기능개발하실 때에 기능 브랜치(feature)를 생성해서 작업하신 후에 커밋하시고 develop 브랜치로 체크아웃하셔서 머지merge를 해주시면 큰 충돌없이 develop에서 소스코드를 유지하실 수 있을겁니다.

깃에 익숙치 않으시다면, 소스트리sourcetree와 같은 GUI 클라이언트를 사용하시는 것을 추천드립니다.

어제 권남님이 그래들gradle 튜토리얼을 진행해주실 때 프롬프트 옆에 깃의 브랜치명이 나타나는 모습을 보고 신기해서 찾아봤습니다. 그러다가 발견한 곳이
tag를 checkout 할 때 detached 라고 나오는 것이 보기 싫어서 찾아봤다.
http://oliverdavies.co.uk/blog/2013/04/27/display-git-branch-or-tag-names-your-bash-prompt
에 나와있는 일부 쉘parse_git_tag 을 추가해서 적용 후 확인 OK.

git branch 를 checkout 했을 경우:


git tag에 대해서 checkout 했을 경우:



+ Recent posts