안녕하세요. Git Flow 사용 시나리오에 대해서 한번 가정해 보았습니다.
A 라는 업무를 하던 도중에 급하게 B 라는 업무를 먼저 처리해야하는 시나리오 입니다.
업무에서 흔하게 일어나는 시나리오 입니다.
먼저, Git Flow를 이용하지 않고 그냥 메인 브랜치에서 작업하면 이렇게 됩니다.
- A업무를 시작
- 수십개의 소스를 여기저기 파헤쳐 놓은 상황.
- 커밋하면 엄청난 버그와 에러가 발생할 상황.
- 4일 동안 작업한 많은 분량.
- 앞으로 4일은 더 해야 마무리 될 상황.
- 이 때 긴급 장애 상황으로 당장 B업무를 위한 소스를 수정해야 함!!
- A업무의 소스를 커밋 할 수도 없고 버리는 건 더 할 수 없음.
- OTL
이런 상황은 정말 최악입니다. 로컬 백업을 해서 복구를 하거나 이상한 방법으로 해결해야 될겁니다.
하지만, Git Flow 기능을 이용한 동일한 상황이라면 아래와 같이 대처가 가능합니다.
- A업무를 시작
- A업무를 위한 브랜치 생성
- 수십개의 소스를 여기저기 파헤쳐 놓은 상황.
- 커밋하면 엄청난 버그와 에러가 발생할 상황.
- 4일 동안 작업한 많은 분량.
- 앞으로 4일은 더 해야 마무리 될 상황.
- 이 때 긴급 장애 상황으로 당장 B업무를 위한 소스를 수정해야 함!!
- A업무의 소스를 일단 모두 커밋 함.
- 다시 개발 브랜치로 체크아웃하고 B 업무를 위한 브랜치 생성.
- B업무 개발완료 후 B업무를 위한 브랜치를 개발 브랜치에 병합.
- 다시 A업무를 위한 브랜치를 체크아웃.
- A업무 개발 완료 후 개발 브랜치에 병합.
새 기능 시작 창
1. 기능명
- 업무명, 기능명, 모듈명 혹은 이슈 넘버 등
2. 시작지점
- 최근 개발 브랜치 : 개발 브랜치의 가장 최신 커밋 이력으로부터 브랜치 파생
- 작업 사본 부모 : 현재 작업 중인 브랜치로부터 브랜치 파생
- 명시된 커밋 : 특정 커밋 이력으로부터 브랜치 파생
3. 확인 클릭.
“A업무” 라는 새 기능 시작 후 SourceTree 화면
커밋하지 않은 A업무 폭풍 작업내용.
급하게 B 업무를 처리하기 위하여 임시 커밋
1. 현재 A업무 브랜치를 작업 중 입니다.
- B업무 작업 시작을 위해 master 브랜치로 작업 브랜치를 이동 합니다.
- master 를 더블 클릭 합니다.
2. A 업무 브랜치 작업 중일 때 Local Git Repository 입니다.
3. master 브랜치로 이동 후 Local Git Repository 입니다.
- 동일한 Local 폴더이지만 현재 작업 브랜치에 따라서 소스파일들이 변경 됩니다.
4. master 브랜치로 이동한 모습입니다.
5. 현재 커밋 이력 포인터가 A업무 브랜치를 시작하기 바로 전으로 이동하였습니다.
A업무와 동일하게 B업무 새 기능을 시작한 후 SourceTree 화면 입니다.
B업무 완료하고 커밋과 푸시 후 SourceTree 화면 입니다.
깃 플로우 메뉴를 클릭하면 나타나는 창 입니다. - B업무 브랜치를 종료하기 위해 “기능마무리”를 클릭 합니다.
“기능마무리”를 클릭 후 나타나는 창 입니다.
!! 문제가 발생 했습니다.
- B업무 및 A업무 기능 시작을 모두 master 브랜치로부터 파생했는데 깃 플로우를 이용한 기능 마무리는 개발 브랜치로만 병합이 됩니다.
- 깃 플로우의 “새 기능 시작” 기능은 개발브랜치에서만 이용하는 것이 맞는 것 같습니다.
- 어쩔 수 없이 “취소”를 클릭 합니다.
- “깃 플로우” 기능을 이용했지만 결국 브랜치이므로 master 브랜치에서 B업무 브랜치를 병합하고 B 업무를 삭제하면 됩니다.
master 브랜치로 이동 후 메뉴의 “병합” 을 클릭 해서 나타난 창 입니다.
B업무를 종료하기위한 병합입니다.
현재 master브랜치에서 B업무 브랜치를 당겨와 병합니다.
빨간 박스를 선택하고 확인을 클릭합니다.
master 브랜치에 B업무 브랜치 병합 후 SourceTree 화면 입니다.
master 브랜치에 B업무 브랜치 병합 후 LocalRepository 화면 입니다.
A업무 브랜치로 다시 돌아온 후 Local Repository 화면 입니다.
A업무 마무리를 위하여 “새 텍스트 문서” 들을 삭제하고,
“A업무완료.txt” 파일을 추가하였습니다.
A업무를 커밋과 푸시하고 master 브랜치에서 A업무 브랜치를 당겨와 병합한 후 SourceTree 화면 입니다.
최종적인 master 브랜치의 Local Repository 화면 입니다. - A업무 브랜치, B업무 브랜치 모두 병합 완료 하였습니다.
'Tool' 카테고리의 다른 글
STS 무반응 (0) | 2017.10.11 |
---|---|
Excel 파일이 손상되어 열 수 없습니다. (0) | 2017.09.26 |
소스트리 - git-remote-https.exe 시작 지점 없음 (0) | 2017.09.20 |
balance 설치 - balance를 이용해 proxy sever 사용하기 (0) | 2017.09.13 |
sublimetext 3 암호화 플러그인 (0) | 2017.08.26 |
[SourceTree를 이용한 상황별 Git 사용법] 수정한 내용을 모두 버리고 원격 소스 상태로 복구 (0) | 2017.08.25 |
[SourceTree를 이용한 상황별 Git 사용법] 커밋 시 충돌 후 병합 (0) | 2017.08.24 |
SourceTree 설치하기 (0) | 2017.07.24 |