일단 시작하는 Git (7)

Do_Doolly·2022년 4월 25일
0

형상관리 도구

목록 보기
7/11
post-thumbnail
  • 글에 적은 내용 중 잘못된 부분은 댓글로 적어주시면 감사하겠습니다!

🔜 협업의 시작

이전까지 등장했던 둘리와 희동이를 다시 데려와보자. 지금까지는 각자 작업한 내용들은 한 폴더 혹은 한 위치에 같이 저장해서 사용했다. 실제 업무를 할 때 이렇게 너 파일, 내 파일 나눠서 작업하면 더 이상 문제될 건 없다. 크나큰 희망사항
문제는 실제로 일을 할 때, 각자 자신의 파일만 작업하지 않는다는 것이다! 때로는 다른 사람이 만든 파일을 수정해야 될 때도 있고, 내 파일을 공유해서 다른 사람이 작업해야 할 때도 있을 것이다. 아니면 여러 사람이 하나의 기능을 조금씩 나눠서 나중에 합쳐야 할 수도 있다. 이럴 때는 어떻게 Git을 활용해야 할까?


🧐 브랜치의 의미

1. 나뭇가지

Git의 기능을 알아보기 전에 나무의 가지를 한번 떠올려보자. 아래와 같이 한 개의 줄기(?)에서 큰 가지들로 나뉘고, 그 가지에서 좀 더 작은 나뭇가지로 나뉘고, 다시 그 가지에서 더 작은 나뭇가지로 나뉜다.
이 나뭇가지들은 처음의 큰 줄기에서 나뭇잎부분이 나오는 가지까지 여러 갈래로 나뉘게 된다.

2. Git 브랜치

Git에는 이런 가지의 의미와 동일한 브랜치라는 개념이 있다.[1] 말 그대로 나뭇가지 처럼 하나의 프로젝트를 여러 갈래 혹은 여러 방향으로 나눠서 작업할 수 있다는 의미다.
희동이랑 둘리가 아래와 같이 하나의 프로젝트를 맡았는데, 각각 다른 기능을 작업할 경우 둘리 브랜치와 희동이 브랜치로 나눌 수 있다. 여기서 Main 브랜치는 프로젝트에 최종적으로 담기는 결과물이 커밋되어 있고, 둘리랑 희동이 브랜치는 메인 브랜치에서 별개로 자신들의 작업을 하고 있다.

3. 기본 브랜치 확인

로컬에서 Git 설치 후 아무 작업도 하지 않았다면 아마 Master나 Main 브랜치가 있을 것이다. 브랜치명을 확인하려면 터미널 창에서 아래와 같이 입력해보면 된다.
참고로 Main이나 Master나 기본 브랜치 명은 상관 없지만, 요즘은 Master/Slave란 단어를 자제하는 추세라서 Main을 좀 더 자주 쓴다.

# -a 옵션을 주면 원래 원격 저장소의 브랜치도 나온다
$ git branch -a

4. 브랜치 만들기

여기서 둘리와 희동이가 각각 브랜치를 만들건데, 설명을 위해 약간의 차이를 뒀다. 둘리는 메인에서 곧바로 브랜치를 만들고, 희동이는 메인에서 한 개의 파일 커밋 후 브랜치를 만든다. 그 후 브랜치를 확인하면 3개의 브랜치가 있는 것을 볼 수 있다.

# 둘리 브랜치 생성
$ git branch doolly
# 기본 브랜치에서 파일 생성 후 커밋
$ touch mainStart.txt
$ git add .
$ git commit -m "둘리와 희동이의 공동 프로젝트 시작"
# 희동이 브랜치 생성
$ git brnach heedong

5. 체크아웃

이전에 설명은 안했지만, Git에는 체크아웃이란 기능도 있다. 이는 브랜치를 옮기는 명령어로 현재의 브랜치에서 다른 브랜치로 바꾸는 것이다. 브랜치를 변경하게 되면 스냅샷도 달라지게 되므로, 병합되거나 리베이스 되지 않았을 경우 다른 파일들이 보일 것이다.
기본 브랜치인 Main에서는 아래와 같이 가장 최근에 생성한 mainStart 파일이 보인다.

$ git checkout doolly

하지만 둘리 브랜치에서는 mainStart 파일이 보이지 않는다. Git log를 봐도 다름을 알 수 있다.

6. 브랜치의 관점

두 개가 나타나는 이유는 각자 브랜치에서 보는 관점이 다르기 때문이다. 현재 브랜치에서는 다른 브랜치에서 어떤 일들이 벌어지고 있는지 알 수 없다. 나중에 브랜치를 합치는 병합(Merge)을 했을 때 비로소 다른 브랜치에서 어떤 작업을 했고, 하나의 파일로 합쳐졌는지 알 수 있게 된다.
아까의 사진을 가지고 다시 설명하자면, 둘리 브랜치의 관점에서는 희동이와 기본 브랜치에서 어떤 일이 일어나는지 알 수 없고, 희동이 브랜치의 관점에서는 둘리와 메인 브랜치에서 일어나는 일을 알 수 없다.


🔚 마무리

브랜치를 사용하면 기본 브랜치를 건드리지 않는 한, 프로젝트의 공동 파일을 놔두고 내 파일들만 작업할 수 있다. 혹은 공동 작업을 하더라도 내용이 겹치지 않는다면 같은 파일을 작업할 수 있다. 다음에는 이 브랜치들을 합치는 병합을 한 번 해보자



& Git 강의 링크

생활코딩 Gitn


주석

[1] : Git 브랜치란 무엇인가?

profile
생각하면 복잡하니까 일단 해보자

0개의 댓글