728x90

- branch 는 가지를 의미합니다. branch는 어떤 기능을 가지고 있길래 가지라는 뜻을 가지게 되었을까요?

- 여러분이 어떤 회사에 사용 설명서를 만드는 사람이라고 생각해 보겠습니다. GIT 으로 잘 만들고 있었습니다.
- 이렇게 독자적으로 제품을 만들고 있을 때에는 다음과 같이 버전이 형성되었을 겁니다.

- 그런데, 제품을 출시하고 난 이후 고객사들이 생겨났고, 고객사들마다 원하는 제품의 방향성이 조금씩 달랐던 겁니다.
- 여러분은 고민 끝에 다음과 같은 방법을 생각해냈습니다.

- GIT 저장소를 고객사 이름대로 복사를 한 이후, 각 고객사들이 원하는 제품을 독자적으로 개발하였습니다. 문제를 해결한 것이죠. 그런데, 잘 보면 비효율적인 곳들이 눈에 보입니다.

- 이전에 master 버전의 내용이 다른 고객사들한테도 똑같이 적용되어 있는 것을 알 수 있습니다.
- 만약 우리가 100개의 고객사가 있었다면 우리는 100개의 directory 를 만들었어야 했을 겁니다.
- 버전관리를 사용하는 이유는 파일이름을 더럽히지 않으면서 버전관리를 하는 것이었습니다. 그런데, 이렇게 했더니 고객사마다 디렉터리가 만들어지고 있었고 디렉터리의 이름이 더럽혀지고 있습니다.

- 또한, Google 고객사 버전에서 작업한 내용들이 Apple 제품에도 필요해졌습니다. 이럴 경우 우리는 Google 버전의 코드를 복사해서 Apple 저장소 디렉터리에 붙여넣기 하고 버전을 새로 만들면 될겁니다.
- 그런데, 이렇게 하면 Apple 의 입장에서는 GH 라는 Google 의 최신 버전만 Apple 에 복사되고 GE 와 GF 라는 버전의 역사들은 유실되게 됩니다.
- 또한 코드를 병합하는 과정에서 생기는 많은 문제들을 우리가 직접 처리해야 합니다. 같은 파일에 서로 다른 위치를 수정했거나, 다른 파일의 다른 곳들을 동시 다발적으로 수정했다라고 하면 병합하는 과정에서 생기는 문제들을 하나하나 따지면서 고쳐나가야 했을 겁니다. 서로 같은 파일에서 같은 부분을 수정했는데, 그것을 덮어쓰기 해서 예전 버전이 적용되는 경우도 생길 수 있습니다.

- 이런 지옥 속에서 우리를 구원해주는 도구가 Brach 입니다.
- git 의 branch 기능을 사용하면 이런 문제들을 해결할 수 있습니다.

- 그런데, branch 를 활용할 때 필연적으로 우리가 넘어서야 하는 것이 하나 있습니다. 바로 conflict 충돌입니다.

- A txt 와 B txt 라는 서로 다른 파일이 버전마다 있을 때, branch 를 활용하면 두 개를 자동으로 합쳐줍니다.

- 또한, 서로 다른 파일의 서로 다른 부분이 수정되었을 때 git 은 자동으로 하나의 파일로 만들어줍니다.

- 대박입니다. 그런데, 같은 파일인데 같은 부분을 수정했다면 git 은 병합을 중지시키고 병합을 하는 사람에게 이 부분은 충돌이 났기 때문에 수동으로 수정해주세요 라고 요청합니다. 바로 이런 상황을 conflict 충돌이라고 부릅니다.

- 앞으로 우리는 병합하는 과정에서 발생하는 충돌에 대해서 배울 것이고 충돌이 왜 발생하는 가를 공부할 겁니다. 충돌에 대해서 자신감이 생기면 충돌이 사고가 아니라 git 이 제공하는 가장 멋진 기능이라는 것을 알게 될 것입니다.
- git 과 함께라면 두려울 것이 없을 것이라는 생각도 들 것입니다. 기대되지 않나요? 출발합시다.

출처 : https://opentutorials.org/course/3840
'[생활코딩] 형상관리 > GIT3 branch & conflict' 카테고리의 다른 글
| GIT3 branch & conflict - 병합(merge) {다른 파일 병합, 같은 파일 다른 곳 수정 병합, 같은 파일 같은 곳 수정 병합} (0) | 2023.05.14 |
|---|---|
| GIT3 branch & conflict - 브랜치의 기본사용법 (1) | 2023.05.13 |
| GIT3 branch & conflict - 실습준비 (0) | 2023.05.13 |