브랜치
원본 공책은 그대로 두고, 그 시점에서 갈라져 나온 복사본에 마음껏 고쳐 쓰는 방법이에요.
정의 코드를 관리하는 프로그램인 깃에서, 원래 줄기와 따로 갈라져 나온 작업 갈래를 뜻해요. 지금까지 쌓인 기록을 그대로 물려받은 자리에서 새 작업을 이어 붙여요. 원래 줄기는 손대지 않은 채로 남아 있어서, 잘 안 되면 언제든 돌아갈 수 있어요.
원본 공책을 두고 복사본에 써 보는 방법
반 친구들과 학급 문집을 만든다고 생각해 볼게요. 공책 한 권에 다 같이 글을 채워 넣고 있어요. 그런데 새로운 이야기를 시험 삼아 써 보고 싶어요.
원본 공책에 바로 쓰면 마음에 안 들었을 때 곤란해져요. 지우고 덧쓴 자국이 남아서 앞의 글까지 지저분해지거든요. 그래서 지금까지 쓴 쪽을 그대로 복사해 새 공책을 만들고, 거기에 마음껏 써 봐요.
깃에서는 이 복사본을 브랜치라고 불러요. 만들어진 순간에는 원본과 내용이 같지만, 그 뒤로 쓰는 글은 이 복사본에만 쌓여요. 원본은 손대지 않은 채로 그대로 남아 있어요.
원본 노릇을 하는 줄기도 사실은 브랜치 하나예요. 보통 메인 브랜치라고 부르고, 다들 이 줄기를 완성본으로 여기며 작업해요.
여럿이 함께 쓰고, 다 되면 옮겨 붙여요
문집을 혼자 만들지는 않죠. 여러 친구가 각자 복사본을 들고 서로 다른 꼭지를 써요. 옆 사람이 무엇을 쓰든 내 복사본은 흔들리지 않아요.
한 사람이 자기 꼭지를 다 쓰면 그 글을 원본 공책으로 옮겨 붙여요. 깃에서는 이렇게 갈래의 작업을 원래 줄기로 합치는 일을 병합이라고 불러요. 이때부터 그 글은 모두의 완성본에 들어가요.
문제는 두 사람이 같은 쪽을 서로 다르게 고쳐 왔을 때예요. 한쪽은 문장을 늘리고 다른 쪽은 아예 지웠다면, 어느 쪽을 남길지 사람이 골라 줘야 해요. 이렇게 손이 필요한 상황을 충돌이라고 해요.
그래서 복사본을 너무 오래 묵히면 합칠 때 고생해요. 원본이 그사이 많이 바뀌어 버리거든요. 작게 갈라서 자주 합치는 편이 훨씬 수월해요.
조금 더 정확히 말하면
깃은 사실 공책을 통째로 복사하지 않아요. 브랜치는 '이 줄기의 맨 끝은 여기'라고 알려 주는 이름표 하나에 가까워요. 글이 한 쪽 늘어날 때마다 이름표가 그 쪽으로 옮겨 갈 뿐이에요.
그래서 브랜치를 만드는 데 드는 시간이 거의 없어요. 새 이름표 하나를 붙이는 일이니까요. 하루에도 여러 개를 만들었다가 필요 없어지면 지우는 것이 흔한 일이에요.
이름이 헷갈리기 쉬운 이웃도 하나 있어요. 커밋은 그때그때 저장해 둔 공책의 한 쪽이에요. 브랜치는 그 쪽들이 이어진 줄기에 붙인 이름이고요.
그러니 브랜치를 아주 다른 세상이라고 여길 필요는 없어요. 원본으로 돌아올 자리를 표시해 두고, 그 자리에서 갈라져 나와 마음 편히 고쳐 보는 방법에 가까워요.
🤔 흔한 오해
브랜치를 만들면 프로젝트 폴더 전체가 복사되어 저장 공간을 그만큼 더 쓴다.
브랜치는 줄기의 끝을 가리키는 이름표에 가까워요. 새로 만들 때 파일이 통째로 복사되지 않아서, 만들고 지우는 데 드는 부담이 아주 작아요.
브랜치에서 작업하면 원래 줄기의 코드도 함께 바뀐다.
갈라져 나온 뒤에 쌓은 작업은 그 갈래에만 남아요. 원래 줄기에 반영하려면 병합이라는 단계를 따로 거쳐야 해요.
🧺 일상에서 만나요
지금까지의 기록을 물려받아 갈라져 나온 작업 갈래라서, 원래 코드를 건드리지 않고 새 작업을 시험해 볼 수 있어요.