11.1 Git의 브랜치
Git의 (branches)
로 작업하기는 버전 관리의 핵심 중 하나로,
하나의 레포지토리에서 여러 개발 라인을 병렬로 진행할 수 있게 해준다.
브랜치 생성은 Git을 협업, 실험 및 프로젝트의 다양한 버전을 관리하는
강력한 도구로 만든다.
Git의 브랜치를 폴더로 생각할 수 있어. Git이 당신의 프로젝트를 복사해서 넣는 폴더지. 당신의 로컬 레포지토리에 있는 주요 프로젝트 폴더는 master
야. Git은 이 폴더를 복사해서 시험해볼 수 있도록 하고, 주요 작업 코드에 지장이 안 가도록 해줘. 이런 폴더 복사본을 브랜치라 부르는 거야 — branches
.
브랜치는 코드의 대안적인 버전이야. 만약 대규모 프로젝트에서 무언가를 바꾸고 싶거나 확신이 없는 실험을 하고 싶다면 어떻게 할 거야? Git 없이 한다면?
프로젝트를 새로운 폴더에 복사하고 거기서 모든 걸 시도해볼 수 있을 거야. 결과가 마음에 든다면, 주요 폴더로 복사하면 돼. 마음에 안 든다면 그냥 잊어버리거나 아예 삭제해도 되고.
책을 쓰는 사례로 한 번 봐보자:
- 당신에게는 책의 원고가 있어 (주 브랜치).
- 결말을 바꿔보고 싶어 (새로운 브랜치 생성).
- 별도의 문서에서 새 결말을 작성해 (새 브랜치에서 작업).
- 새 결말이 더 마음에 들면 원고를 교체해 (브랜치 병합).
- 새 결말 문서를 삭제해 (브랜치 삭제).
11.2 브랜치 생성
PyCharm에서 브랜치를 만드는 건 아주 쉬워.
브랜치 이름을 입력해.
PyCharm은 즉시 상단 메뉴에 현재 브랜치 이름을 표시해:
이전에는?
이전에는 첫 번째 및 주 브랜치 이름이 표시되었어 —
master
.
이제 test
가 표시되는데, 이는 Git (PyCharm의 지시로)이 새로운 브랜치를 생성하고 즉시 그 브랜치로 전환되었다는 것을 의미해.
현재 브랜치 (test)
에 main.py
파일에 코드를 추가하고 커밋해봐.
11.3 브랜치 간 전환하기
1단계: 브랜치 선택하기.
이제 우리의 오래된 브랜치로 전환해보자. 상단 메뉴를 클릭하면 뭐가 보이니?
헷갈리지 마 — 아주 간단해:
Local
— 당신의 로컬
git 레포지토리의 브랜치 목록이야; 여기에 두 개가 있어:
test
master
Remote
— GitHub 서버에 있는 당신의 원격 레포지토리야. 우리는 당신의 변경 사항을 거기로 보냈지만 새로운 브랜치는 없었어, 그건 당연한 거야. 원격 레포지토리의 이름은 origin이고, 거기는 master
브랜치만 있어.
Recent
— 최근에 작업한 브랜치 이름 목록이야. 이 항목은 PyCharm에서 편리함과 속도를 위해 추가됐어.
로컬 레포지토리 이름 오른쪽의 origin/master
— 지금 동기화된 원격 레포지토리의 이름이고, 변경 사항이 그곳으로 전송될 거야.
2단계 — 현재 폴더에 브랜치 코드를 다운로드하기.
3단계: 확인하기.
나는 (master)
브랜치와 오래된 코드가 표시돼.
11.4 브랜치 병합하기
이제 우리의 두 브랜치의 코드를 합쳐보자.
1단계. 먼저 프로젝트에 또 다른 파일을 추가해 — init.py를 추가하고 코드 몇 줄 작성해.
- 파일 init.py 생성하기
- 코드 print("안녕") 작성하기
- 파일 커밋하기.
이게 master
브랜치의 내 두 파일이야:
2단계. 브랜치 병합.
우리의 현재 브랜치 (master)
에
test
브랜치에서 이루어진 변경 사항을 합쳐.
이를 위해 상단 메뉴와 «Merge ‘test’
into ‘master’»
명령을 사용해.
3단계 결과 확인:.
확인해보자:
- 위쪽에는 여전히
master
브랜치가 표시돼 - 두 개의 파일이 있어: init.py와 main.py
-
main.py 파일은
test
브랜치에서 추가된 코드를 포함하고 있어.
11.5 병합 충돌
가끔 브랜치를 병합할 때 충돌이 발생해.
같은 파일에 다른 브랜치에서 변경을 가하면 병합 시 충돌이 생길 수 있어.
텍스트 파일 충돌
Git은 굉장히 똑똑한 시스템이야. 파일 형식을 이해해. 만약 텍스트 파일의 다른 곳을 변경했다면, Git은 자동으로 한 파일에서 다른 파일로 변경 사항을 옮겨줘. 마치 사람이 하는 것처럼.
바이너리 파일 충돌
하지만 이미지나 문서를 변경했다면, Git은 이들을 하나의 파일로 병합하려 하지 않고, 어떤 파일 버전을 현재 브랜치에 남길지를 선택하게 할 거야.
수동으로 충돌 해결하기:
같은 텍스트 파일 같은 부분을 수정했다면, Git은 올바른 병합을 할 수 없어서 당신에게 그 작업을 맡길 거야.
이렇게 보여질 수 있어:
여기서 무엇을 보나:
- 왼쪽은 master 브랜치의 main.py 파일 내용
- 오른쪽은
test
브랜치의 main.py 파일 내용 -
가운데에 PyCharm은 최종 코드 버전을 작성하라고 해
(파일 중 하나에서 변경 사항을 자동으로 삽입하려면
«>>»
와«<<»
버튼을 누를 수 있어).
나는 master
버전을 받아들여 수동으로 코드를 작성했어. 이렇게 됐어.
11.6 변경 내역
또 다른 유용하고 흥미로운 것: 어느 파일이든 변경 내역을 볼 수 있어,
Show History
버튼을 클릭하면 돼. 그녀석이 어디에 있는지 찾아보자.
내 main.py 파일의 변경 내역은 이렇게 보여:
설명:
-
왼쪽에서는 특정 파일의 변경 내역을 볼 수 있어:
- 변경이 최신일수록 위에 있어; 오래될수록 아래에 있어.
- 여기에 브랜치 병합 내역도 볼 수 있어.
- 오른쪽 — 특정 커밋에 적용된 변경 사항.
GO TO FULL VERSION