소스트리를 이용한 git merge request 및 fetch, merge, rebase 개념 및 사용법 - gitlab, bitbucket, github
Development/GIT 2017. 2. 3. 13:15>> 재배치 (rebase)를 통한 그래프 관리
- 현재 master, origin/master, upstream/master 모두 같은 위치에 있음
- 모든 저장소는 동일한 상태
- 개인 Fork 에서 master로 작업 내용 커밋 (푸시 안함)
n 수정 내용 1
n 수정 내용 2
n 수정 내용 3 (현재 master 위치)
- Fork 저장소인 Origin/master 에 커밋 내용 push
n 수정 내용 3 (현재 master, origin/master 위치)
- 개인 Fork 저장소에서 MergeRequest 생성
n GosMobile/klp (fork 저장소) -> gosmobileplatform/klp (원본 저장소)
n Fork 저장소에 반영한 수정 내용 1, 2, 3 MergeRequest 생성
- Assignee 담당자가 코드 리뷰 후 upstream/master 에 MergeRequest 내용을 merge
- MergeRequest 보낸 이후 master에서 다시 수정 작업 진행
n 또 수정 1
n 또 수정 2
n 또 수정 3
n 또 수정 4
- 수정 작업 중 upstream/master 내용을 본인의 master에 가져오고 싶음
n Upstream/master 오른쪽 클릭 후 가져오기 (fetch) : 병합 안함
n 가져오기만 했을 경우 git 트리 그래프 상태
n 이 상태에서 병합을 하게되면 병합 로그가 다시 남기 때문에 그래프를 정리하기 위해서 rebase 처리 (커밋 내용이 origin/master로 푸시되지 않은 상태여야 함)
n 가져와 병합하기 할 경우 master 에 커밋된 내용과 upstream/master 내용이 병합되어 새로운 커밋이 생성 됨 (merge 커밋이 빈번하게 쌓이기 때문에 merge대신 재배치로 처리)
n 내 master 위치에서 그래프 상 upstream/master 오른쪽 클릭 후 재배치 (rebase)
n Rebase 를 하면 그래프가 예쁘게 정리 됨 (그래프가 내 master 기준으로 깔끔하게 다듬어 진 상태)
n 병합 (merge) 하기와 재배치 (rebase) 그래프 차이
- 이 상태로 origin/master로 push를 하고 추가 수정된 또 수정 1, 2, 3을 MergeRequest하면 upstream/master에서 만 MergeRequest 내용 Merge 로그가 남게됨
>> 재배치를 이용한 개인 Fork master 커밋 로그 합치기
- 이성민 Fork 저장소의 master에서 커밋 1, 커밋 2, 커밋 3을 했는데 origin/master, upstream/master에는 커밋 내용을 합쳐서 깔끔하게 올리고 싶음
- 커밋 1, 2, 3의 뿌리가 되는 커밋 항목에서 오른쪽 클릭
- 맨 위 커밋 선택 후 이전 커밋과 합치기 클릭
- 합칠 커밋 계속해서 반복 작업 진행
- 커밋 내용 모두 합친 이후 메시지 편집 클릭하여 메시지 재 작성
- 커밋 1, 2, 3 내용이 커밋 한 개로 합쳐진 상태 (커밋 히스토리를 깔끔하게 정리 : 예를들어 욕 써놓은 커밋이라던지, 실수로 커밋한 내용이라던지… 등등등)
- 합쳐진 커밋을 MergeRequest 생성 해서 리뷰 요청
'Development > GIT' 카테고리의 다른 글
SourceGear DiffMerge git Client 설정 (0) | 2021.05.17 |
---|---|
git push 되돌리기 (0) | 2016.08.24 |