[Git] git 명령어 정리 및 git-flow

[Git] git 명령어 정리 및 git-flow


github blog로 branch 관리

  • git branch 관리 할 git 폴더로 이동.
    • $ cd ~/githubBlog
  • 서버에서 생성되어 있는 브랜치 보기
    • $ git branch -r

현재 브랜치가 master뿐이므로, 최초로 서버에 브랜치를 만들기

  • 먼저 서버이름 확인하기
    • $ git remote
    • 먼저 clone해 온 서버는 이름을 지정하지 않으면 origin이라는 이름을 가짐
    • 또한, 최초로 만들어진 branch의 이름은 master이다.
  • 새로운 브랜치 만들고 서버에 올리기
    • git push <server name> <local branch>:<remote branch>
    • $ git push origin master:development
// 결과
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'devlopment' on GitHub by visiting:
remote:      https://github.com/twowinsh87/twowinsh87.github.io/pull/new/devlopment
remote:
To https://github.com/twowinsh87/twowinsh87.github.io.git
 * [new branch]      master -> development
  • 만들어진 브랜치 확인해보기
    • $ git branch -r
  • 만들어진 브랜치로 바꾸어보기(master -> development)
    • $ git checkout development // -d는 branch 삭제 옵션
    • 혹은 $ git checkout development
  • 참고: git checkout -b 브랜치B 브랜치A // -b 옵션의 경우
  • development 상태(혹은 다른 생성된 브랜치)에서, 서버에서 진행된 상황 가져오기
    • $ git pull
  • 현재 브랜치 확인하기
    • $ git branch
    • 일반 bash shell 사용자의 경우에 확인하기 편리함.
    • oh my zshell을 사용하는 경우, git을 사용하는 repository에서 현재 branch를 확인하기 용이
  • 작업이 끝나면
    • $ git push

참고, origin/master와 master의 차이

  • 참고하기
  • 나의 이해가 틀렸을 수도 있음.
    • master는 나의 로컬의 master을 뜻하고,
    • origin/master는 원격 저장소 origin의 master 브랜치를 나타냄
    • 로컬의 master로 작업한 부분과 원격 저장소 origin/master의 변경 사항이 다를 수 있으므로
    • 이렇게 구분하는 것 같음.


Git-flow

  • master와 develop 브랜치
    • origin/master는 실제 최종으로 릴리즈된 소스코드만을 관리한다.
    • 개발중의 코드는 develop 브랜치에 commit하는 것을 원칙으로 한다.
    • 문제가 없고, 릴리즈 단계에서 master가 merge하는 것으로 한다.
  • feature 브랜치
    • develop으로 부터 feature 브랜치를 만들고, 작업이 끝나면 develop이 merge한다.
    • 작업이 다 끝난 feature는 브랜치를 삭제한다.
    • feature브랜치는 origin에서 관리하지 않는다.
  • release 브랜치
    • develop으로 부터 브랜치를 만들고 develop과 master 브랜치로 merge된다.
    • develop 브랜치에서 기능이 거의 완성이 되었을 때, release 브랜치를 만든다.
    • release 브랜치는 버전명, 빌드 날짜, 테스트 중 오류를 수정한다.
    • 역시 완벽한 코드가 완성이되면, develop과 master로 머지하고, release 브랜치는 삭제한다.
  • hotfix 브랜치
    • 현재 배포 된 긴급한 오류(master 상의 오류)를 긴급하게 수정할 때 사용한다.
    • master로 부터 브랜치를 만들고, 긴급 수정, 테스트 이후에 master와 develop으로 merge한다.