카테고리 없음

Merge.2023-03-05

presnt__lee 2023. 3. 5. 16:55
반응형

Merge

각자의 브랜치에서 개발이 완료 되면 [master] 브랜치에 작업물을 합쳐야 한다.

병합(Merge) : 두 버전의 합집합을 구하는 것으로 아래와 같은 세 가지 상황이 일어날 수 있다.

  • 빨리 감기 (Fast-forward) : 하나의 커밋에만 변화가 있어 새로운 상태를 만들어줄 필요 없이 기존 커밋과 동일하게 변화가 있는 커밋으로 상태를 바꾸어주는 상황
  • 병합 커밋 (Merge Commit) : 두 커밋에 모두 변화가 있어 병합하면서 새로운 커밋이 만들어지는 상황
  • 충돌 (Conflict) : 같은 파일에 대해 두 커밋 모두 변화가 있어 어느 쪽으로 합쳐야 할지 충돌이 일어나는 상황. 충돌이 난 부분을 확인하고 무엇을 남길지 수동으로 선택해서 해결해야함.

빨리 감기(Fast-forward)

[master] 브랜치에서 [menu1] 브랜치를 병합하면 커밋 3는 커밋 2를 단순하게 수정한 수정본이므로 두 상태를 합치면 따로 바뀌는 상태 없이 커밋 3이 된다. 커밋 2를 가리키던 [master] 브랜치가 빨리 감기를 해서 커밋 3를 가리키게 된다.

그냥 기능만 추가되니까

 

[menu1] 브랜치의 모든 내용이 [master] 브랜치에 반영 되었으니 [menu1] 브랜치는 삭제 가능하다.

병합 커밋(Merge Commit)

커밋 4는 커밋 2를 기준으로 변경 되었기 때문에 커밋 3과 커밋 4는 병합 커밋이 일어난다. 해당 병합을 [master] 브랜치에 올리거나, [menu2] 브랜치에 올리는 것 둘 다 가능하지만 [master] 브랜치에 올린다.

.

충돌 (Conflict)

만약 커밋3과 커밋4가 같은 파일에 다른 수정을 한 경우 어느 쪽을 선택해야 할지 알 수 없어 충돌이 발생한다. 충돌을 피하기 위해서는 작업 디렉토리를 세세하게 분리하여 동일 디렉토리 내부에 작업하는 일이 없도록 하는 것이 좋다. 그럼에도 불구하고 충돌이 발생하는 경우에는 충돌 코드 수정 후 병합해야한다.

Merge

각자의 브랜치에서 개발이 완료 되면 [master] 브랜치에 작업물을 합쳐야 한다.

병합(Merge) : 두 버전의 합집합을 구하는 것으로 아래와 같은 세 가지 상황이 일어날 수 있다.

  • 빨리 감기 (Fast-forward) : 하나의 커밋에만 변화가 있어 새로운 상태를 만들어줄 필요 없이 기존 커밋과 동일하게 변화가 있는 커밋으로 상태를 바꾸어주는 상황
  • 병합 커밋 (Merge Commit) : 두 커밋에 모두 변화가 있어 병합하면서 새로운 커밋이 만들어지는 상황
  • 충돌 (Conflict) : 같은 파일에 대해 두 커밋 모두 변화가 있어 어느 쪽으로 합쳐야 할지 충돌이 일어나는 상황. 충돌이 난 부분을 확인하고 무엇을 남길지 수동으로 선택해서 해결해야함.

 

반응형