집게사장의 꿈

유니티 github desktop merge / 유니티 브랜치 병합 / 유니티 병합 충돌 / 유니티 깃데스크탑 병합 본문

Git

유니티 github desktop merge / 유니티 브랜치 병합 / 유니티 병합 충돌 / 유니티 깃데스크탑 병합

Krapboss 2023. 11. 2. 03:31
순서

1. 깃에 브랜치 A 새로 생성

2. 브랜치A 에 작업하기

3. Main에 작업하기

4. 브랜치 A를 Main에 Pull Request[병합 요청] 보내기

5. Conflict나는 브랜치 A의 변경 사항을 Main 프로젝트를 가져와 수정하기

6. Merge

 


 

1. 깃에 브랜치 A 새로 생성

 

브랜치를 리포지토리에 알림
초기 프로젝트 형태

그렇게 생성된 Main을 Base로 한 브랜치 A

 

 

 

2. 브랜치 A의 Scene.unity의 파일 수정

- 변경 : 오브젝트 추가, 머테리얼 추가

 

 

- 변경 : 위의 Base 스크립트에서 아래 스크립트로 수정

 

-변경사항 저장

 

 

3. Main에 작업하기

 

-메인 변경

 

 

-리로드

 

 

- Main 브랜치

 

 

- 변경 : 실린더 추가, 머티리얼 수정 및 추가, 스크립트 수정 

 

 

-저장 후 push

 

 

 

4. 브랜치 A를 Main에 Pull Request[병합 요청] 보내기

-브랜치 변경하고 클릭

 

- Base <- A를 확인하고 Create Pull request 클릭

 

-그 후 결과창에서 충돌 났다고 확인할 수 있음.

 

 

 

5. Conflict나는 작업한 브랜치 A에 브랜치 Main을 가져와 충돌 수정하기

-다시 Git DeskTop으로 오면 현재 Pull Request 번호[#5]를 확인할 수 있음. [처음하면 #1 입니다.]

 

 

 

- 여기서 중요한 거는 이제 충돌을 해결해줘야 되는데, 이것은 브랜치Main에 합병시키려는 브랜치A 에 브랜치Main의 내용을 가져와서 수정하고 합병을 시켜야 된다.

 

- 이렇게 선택 후 Merge

 

 

--충돌을 보여준다.

 

 

-만약 두 브랜치 중 1개의 파일에 있는 것만 사용하려면 밑줄 친 옵션 중에서 선택하면 된다.

-현재는 VS Code를 사용해서 git Graph를 추가하여 충돌을 수정한다.

-있으면 좋으니 설치하는 것도 좋을 것 같다.

 

 

- C.Mat에 대한 변경 사항을 Open in Visual studio Code를 사용해서 열어보면 이렇게 볼 수 있는데,

여기서 우리가 생각할 것은 

Accept Incoming : 가져오는 파일 브랜치 Main의 내용

Accept Current : 현재 브랜치 A 파일의 내용 

Accept Combination (Incoming #) : 조합[비추천]

Ignore : 무시

 

이 중에 하나로 선택하면 된다.

 

 

 

- 브랜치 A 내용을 사용할 것이기 때문에 Accept Current를 선택하고 Complete Merge를 눌르면 된다.

 

 

-깃 데스크탑에 돌아와 보면 C.mat만 Merge가 완료 되어 C.mat이 사라진 것을  수 있다.

 

 

- *.unity 씬도 위처럼 변경하면 되지만, A를 사용할 것이기에 해당하는 것을 클릭해주면 된다.

 

 

 

 

-스크립트 수정을 보면 해당하는 내용이 있는데, ======기준으로 위쪽 Head가 브랜치 A[녹색 라인] , 아랫쪽이 브랜치main[파란 라인]이다.

Accept Current : Head의 변경사항을 적용

Accept Incoming Change는 main의 변경사항을 적용 

 

-나는 두개 다 사용할 것이기에 Both를 누르고, 사용한다.

 

 

-저장을 누르고 나오면 Continue merge를 눌르면 된다.

 

-변경사항 Push

 

 

 

6. Merge

 

-다시 깃 사이트로 돌아와 보면 A에 대한 변경사항이 바뀐 것을 볼 수 있고, 충돌이 나지 않아 Merge가 되는 것을 확인할 수 있다.

 

 

-Merge 완료

 

- 다시 깃 데스크탑으로 돌아와 보면 Pull Request에 대한 번호가 사라졌고, 다시 Pull Request요청이 가능하다.

 

 

 

-다시 main으로 돌아와 Fetch -> Pull을 하면

 

 

-Branch A의 변경사항이 적용이 된것을 확인할 수 있다.

 

 

 

 

최종 Main

- Main으로 돌아가 보면  Main -> A 로 한 작업으로 인해 A.mat, B.mat 이 바뀐 것을 볼 수 있다.[A.mat, B.mat은 Base[main]파일에 존재하던 것]

- 반면 C.mat은 각 브랜치 A와 브랜치 Main에서 새로 생성한 Material로 인한 변경사항을 수정하였기 때문에 브랜치A의 변경사항으로 적용하는 것으로 했기에 브랜치 A의 내용이 유지되었다.

- 씬 파일인 *.unity는 브랜치 A의 내용을 그대로 사용한다고 변경하였기에 브랜치A의 내용이 유지되었다.

- 스크립트 파일인 Test는 두 코드를 모두 사용하는 Both를 선택하였기에 해당 내용이 반영이 되었다. 

 

 

 

 

비교샷

병합 전 Branch A
병합 전 Branch main

 

최종 Main

 

 

최종 정리

  1. 개인 브랜치에서 작업
  2. 개인브런치에서 Pull Request를 요청한 브랜치와 충돌 확인
  3. 충돌난 브랜치를 개인 브랜치에 Pull
  4. 개인 브랜치에서 충돌나는 것을 수정
  5. 수정된 결과물 확인 후 개인브랜치에 Push
  6. Pull Request에서 충돌 확인 후 Merge

 

같은 이름으로 충돌되는 파일이 있다면, 변경사항을 조정해줘야된다.