코딩굼벵이
구르는 중
코딩굼벵이
  • 분류 전체보기 (116)
    • [C_C++]이론 공부 (17)
      • 알고리즘 (11)
      • 이론+STL (6)
    • [C_C++]코딩테스트 연습 (45)
      • [프로그래머스] level 1 (26)
      • [프로그래머스] level 2 (5)
      • [백준] 일반 문제 (12)
      • 기타 (2)
    • Solana (28)
      • Documentation (9)
      • Validator - 공부 (10)
      • Validator - 실행 (devnet & te.. (6)
      • 그 외 (3)
    • React (4)
    • Linux (2)
    • Javascript (2)
    • 블록체인 기반 핀테크 및 응용 SW 개발 (8)
      • React (1)
      • Javascript (3)
      • Solidity (3)
      • 프로젝트 (1)
    • 기타 (10)

블로그 메뉴

  • 🌟 깃허브
  • 🌿 Portfolio(2021)
  • 홈
  • 태그
  • 방명록

티스토리

최근 글

태그

  • grafana
  • Hooks #React
  • 밸리데이터
  • Immer #ContextAPI
  • 모니터링
  • 솔라나

인기 글

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
코딩굼벵이

구르는 중

[Sourcetree] Bitbucket 협업 시 충돌 병합(Conflict Merge) 해결 방법
기타

[Sourcetree] Bitbucket 협업 시 충돌 병합(Conflict Merge) 해결 방법

2022. 6. 7. 17:29
728x90

* 협업하면서 직접 해보면서 익힌 방법이라 정도가 아닐 수 있음. 기억 안 날 때 참고하기 위한 기록용

프로젝트를 하면 정식으로 반영하는 main branch, 개발하면서 메인에 올리기 전에 테스트하는 test branch 를 사용한다.

개발 중에는 test branch 에서 작업자마다 자신의 브랜치를 만들어 작업하고, 다른 작업자와 코드를 병합하며 충돌이 있을 경우 해결한다. 그런데 병합을 하다가 순서를 잘못 설정하면 detination 코드에 현재 작업한 source 코드를 올려야 하는데, source 코드에 destination 코드가 올라간다든지 해서 작업물이 잡아먹히거나 없어지는 등의 대참사가 일어나기도 한다.

Bitbucket에서 협업 작업을 하면 pull request를 이용해 그런 일을 조금이나마 방지할 수 있다.

 


충돌이 없을 때 병합

1. source 브랜치에 코드를 스테이지에 올리고 커밋/푸시 한다.

커밋 시 description 필요

 

 

2. 코드와 연동해둔 Bitbucket 의 저장소 페이지로 가서 상단의 Create > pull request 를 누른다.

(왼쪽의 Pull requests를 눌러 Create pull request 를 해도 동일하다)

 

3. source 브랜치에서 destination 브랜치로 pull request를 날린다.

 

- 커밋하면서 작성했던 설명 첫줄이 Title이 되고, 그 밑줄부터는 Description에 들어간다. 이 페이지에서 내용 추가해도 됨.

- Add reviewers에 협업자를 넣으면 그 사람이 approve를 해줘야 Merge가 가능하다.

- reviewer 를 추가하지 않으면 나 혼자 코드 변경사항을 확인하고 merge 할 수 있다.

- delete branch 에 체크할 경우 merge 후 브랜치를 자동으로 삭제한다. (개인 브랜치일 때만 체크해보자)

Diff 탭
Commits 탭

하단에 Create pull request 를 누르면 pull request가 생성된다. 그 하단에서는 코드 변동사항(Diff)과 커밋내용, 커밋코드(Commits) 등을 확인할 수 있다.

 

4. Merge를 통해 코드를 병합한다.

이 때 충돌이 있으면 bitbucket에서 충돌을 해결해야 한다고 뜨면서 Merge가 활성화되지 않는다. 이 경우의 해결방법은 아래 '충돌이 있는 병합'에 적어두었다.

상단의 Merge 클릭
Merge 클릭 시 발생 모달

위처럼 Source와 Destination을 확실히 정해주기 때문에 실수할 일이 거의 없다.

Merge 시 다음과 같이 뜬다.

 

이렇게 Merge를 하고 Sourcetree에 가서 패치를 해보면 병합이 되어있다.

 

 

그런데 보다시피 작업하던 Source 브랜치가 Destination 브랜치보다 하나 뒤에 있다.

이런 상태에서 source 브랜치에서 작업을 하고 병합하면 뭔가 귀찮아졌던 것 같다. destination 브랜치에는 병합돼서 적용이 된 사항이 source 브랜치에서는 적용이 안돼있다든가 하는...

그래서 나는 sourcetree에서도 한번 더 병합을 해주는 편이다.

 

5. source 브랜치의 최신 작업이 선택된 상태에서 병합을 누르고 destination 브랜치를 선택해 병합해준다.

source branch 최신 작업 선택된 상태에서 병합
destination 브랜치 최신 작업 선택 후 확인

 

새로운 푸시가 생기고 테스트 브랜치가 메인 브랜치를 따라잡았다. 메인 브랜치에서 변경했던 내역들을 테스트 브랜치에도 반영하기 위한 작업으로 생각하면 될 듯.

dev/_v2 브랜치가 deploy/mainnet 브랜치를 따라잡음

 

반영할 브랜치, 즉 왼쪽에서 푸시 표시가 생긴 브랜치(여기서는 테스트 브랜치)만 선택해 푸시해주자.

원격 브랜치인 origin/dev/_v2 브랜치까지 deploy/mainnet 브랜치를 따라잡음

 

이러면 매번 브랜치를 생성/삭제할 필요없이 작업하던 브랜치에서 계속 작업할 수 있다.


충돌이 있을 때 병합

(일부러 충돌내기 좀 그렇기도 하고 해결방법도 간단해서 글 위주로 작성)

이 경우 Bitbucket을 사용하지 않고 그냥 Sourcetree에서 해결하는 방식을 설명하겠다.

1. Destination 브랜치를 더블클릭해 선택한다.

브랜치 란에 destination 브랜치가 있다면 더블클릭하고, 없다면 아래의 원격 란에서 더블클릭해 체크아웃해올 수 있다.

dev/_v2가 선택되어있는 상태

(위의 캡처는 이미 destination 브랜치를 체크아웃해와서 브랜치란에 들어가 있는 상태이다)

 

destination 브랜치가 선택된 상태

 

2. Destination 브랜치의 최신 작업을 선택한 상태에서 병합 버튼을 누르고, 반영하려는 Source 브랜치의 최신 작업을 선택해서 병합한다.

3. 충돌이 있다며 해결해야 된다고 뜨면 ! 표시가 있는 파일에서 충돌을 해결한다.

- Current Change와 Incoming Change를 선택할 수 있는데, 현재 Destination 브랜치가 선택된 상태이므로 current는 destintation, incoming은 source의 코드가 된다.
 => incoming change를 선택하면 source 코드를 destination 코드에 반영할 수 있다.

4. 커밋하면 충돌을 해결했다는 내용으로 커밋이 올라가 병합이 반영된다.

 

- 끝 -

저작자표시 비영리 변경금지 (새창열림)

'기타' 카테고리의 다른 글

SQL과 NoSQL의 차이, 장단점  (0) 2022.06.23
websocket과 socket.io 의 차이  (0) 2022.06.22
Cognito 참고 자료  (0) 2022.04.26
[Sourcetree] github 토큰 인증 로그인 방법 : sourcetree Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.  (0) 2021.08.19
블로그 개설  (2) 2021.01.05
    '기타' 카테고리의 다른 글
    • SQL과 NoSQL의 차이, 장단점
    • websocket과 socket.io 의 차이
    • Cognito 참고 자료
    • [Sourcetree] github 토큰 인증 로그인 방법 : sourcetree Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
    코딩굼벵이
    코딩굼벵이
    구르는 재주 연마 중

    티스토리툴바