-
분산 환경 워크플로서비스 공부/Git 2022. 12. 6. 02:34
이 포스트와 사용된 사진은 아래의 책 내용을 기반으로 작성하였습니다.
또한 크리에이티브커먼즈에 의거 CC-BY-NC-SA를 따릅니다.
- 커밋 가이드 라인
$ git diff --check
이 명령어를 통해 불필요한 공백문자에 대한 검사를 진행할 수 있다.
$ git log --no-merge issue54..origin/master
issue54..origin/master 문법은 히스토리를 검색할 때 뒤의 브랜치(origin/master)에 속한 커밋 중 앞의
브랜치(issue54)에 속하지 않은 커밋을 검색하는 문법이다.
$ git push -u origin featureB:featureBee
로컬의 featureB 브랜치를 origin 리모트에 push 할 때, 브랜치 이름을 featureBee로 바꿔 올릴 수 있는 문법이다.
- 워크플로
1. Integration-manager workflow (소규모)
a. 프로젝트 Integration-Manager는 프로젝트 메인 저장소에 Push를 한다.
b. 프로젝트 기여자는 메인 저장소를 Clone 하고 수정한다.
c. 기여자는 자신의 저장소에 Push 하고 Integration-Manager가 접근할 수 있도록 공개해 놓는다.
d. 기여자는 Integration-Manager에게 변경사항을 적용해 줄 것을 이메일로 요청한다.
e. Integration-Manager는 기여자의 저장소를 리모트 저장소로 등록하고 수정사항을 Merge 하여 테스트한다.
f. Integration-Manager는 Merge 한 사항을 메인 저장소에 Push 한다.
2. Dictator and Lieutenants workflow (대규모)
a. 개발자는 코드를 수정하고 master 브랜치를 기준으로 자신의 토픽 브랜치를 Rebase 한다.
여기서 master 브랜치란 공식 저장소의 브랜치를 말한다.b. Lieutenant들은 개발자들의 수정사항을 자신이 관리하는 master 브랜치에 Merge 한다.
c. Dictator는 Lieutenant의 master 브랜치를 자신의 master 브랜치로 Merge 한다.
d. Dictator는 자신의 master 브랜치를 Push 하며 다른 모든 개발자는
Dictator의 master 브랜치를 기준으로 Rebase 한다.
소규모 팀의 워크플로에 대해 자세한 예시와 함께 알아보자.
A $ git clone A@githost:simplegit.git A $ vim lib/simplegit.rb A $ git commit -am 'remove invalid default value' B $ git clone B@githost:simplegit.git B $ vim TODO B $ git commit -am 'add reset task' B $ git push origin master
A $ git push origin master To A@githost:simplegit.git ! [rejected] master -> master (non-fast forward) error: failed to push some refs to 'john@githost:simplegit.git'
B가 먼저 push을 했기 때문에 A는 push할 때 에러가 발생. 따라서...
A $ git fetch origin
A $ git merge origin/master
A $ git push origin master
A 가 작업하는 동안
B는 push 후 작업을 더 한 상황.
B $ git fetch origin
B $ git checkout master B $ git merge issue54 B $ git merge origin/master
B $ git push origin master
A가 그 사이에 push하지 않았다면 바로 성공
'서비스 공부 > Git' 카테고리의 다른 글
Git 명령어 정리 - 리모트 브랜치 편 (0) 2022.12.06 Git 명령어 정리 - 로컬 브랜치 편 (2) 2022.12.05 Git 명령어 정리 - 협업 기초 편 (0) 2022.10.23 Git 명령어 정리 - 파일관리 편 (2) 2022.10.14 Git 특징 (2) 2022.10.13