github blog로 branch 관리
- git branch 관리 할 git 폴더로 이동.
- 서버에서 생성되어 있는 브랜치 보기
현재 브랜치가 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
- 만들어진 브랜치 확인해보기
- 만들어진 브랜치로 바꾸어보기(master -> development)
$ git checkout development
// -d는 branch 삭제 옵션- 혹은
$ git checkout development
- 참고:
git checkout -b 브랜치B 브랜치A // -b 옵션의 경우
- development 상태(혹은 다른 생성된 브랜치)에서, 서버에서 진행된 상황 가져오기
- 현재 브랜치 확인하기
$ git branch
- 일반 bash shell 사용자의 경우에 확인하기 편리함.
- oh my zshell을 사용하는 경우, git을 사용하는 repository에서 현재 branch를 확인하기 용이
- 작업이 끝나면
참고, 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한다.