안녕하세요
우당탕탕 개발중인
seoni입니다😆
오늘은 branch에 관한 공부기록을 남겨보려고 합니다.
1. 브랜치란?
브랜치는 "나뭇가지"라는 뜻으로,
버전을 여러 방향으로 관리하거나,
새로운 기능을 추가하거나,
또는 협업할 때 주로 이용이 됩니다.
예를 들어, A와 B가 협업하여
네이버 포탈을 똑같이 구현하겠다고 가정하겠습니다.
현재 검색엔진과 로그인 기능이 구현되어 있다고 할 때,
A씨는 블로그 기능을, B씨는 카페 기능을 구현하기로 했습니다.
만약 원래 코드를 복사하여, A씨와 B씨가 각각 맡은 기능을 구현한다면 어떻게 될까요?
합칠 때 문제가 발생하게됩니다.
서로 어떤 코드를 수정하고 추가했는지 일일이 대조를 해야하기 때문입니다.
그런데 이를 git의 branch를 이용한다면,
코드를 통째로 복사할 필요 없이,
충돌 검사를 해주고, 수정된 부분을 나타내주기 때문에 이것만 확인하면 될 것 입니다.
2. 브랜치 활용 순서
1) 브랜치 생성하기
2) 각자 브랜치에서 기능구현하기
3) 브랜치를 합치기
1) 브랜치 생성하기
브랜치 이름
master브랜치(main 브랜치)= 최초의 브랜치이자 가장 기본 브랜치
위 사진을 예시로 든다면,
파란색 = master branch
빨간색 = blog branch
노란색 = cafe branch 입니다.
이때 네이버 로고 이미지 변경까지
각 branch의 커밋의 갯수를 파악해보면,
master branch는 3개(검색엔진 기능, 로그인 기능, 네이버 로고이미지 변경),
blog branch도 3개(검색엔진 기능, 로그인 기능, 블로그 기능)
cafe branch는 2개(검색엔진 기능, 로그인 기능 //카페기능은 아직 구현안된 상태)가 됩니다.
2) 각자 브랜치에서 기능구현하기
HEAD: 현재 브랜치의 최신 커밋을 가리킴.
체크아웃: HEAD의 위치를 바꿔, 작업하고 싶은 브랜치로 이동
-> cafe branch로 체크아웃
3) 브랜치를 합치기 (= merge)
브랜치들을 합쳐 하나의 코드로 만드는 것을 말합니다.
위 그림에서는
blog branch와 cafe branch를 합쳐
master branch에 새로운 커밋("merge branch")이 생성됩니다.
3. 실습
실습 내용: branch를 생성하여 내 정보를 자기소개서(master branch)에 추가하기
1) 현재 commit 상태를 위와같이 만들어주기
2) 브랜치 생성해주기
브랜치 클릭 > 브랜치 이름: myInfo > 브랜치 생성
검은색 원 = HEAD (현재 내가 작업 중인 branch)
3) myInfo 브랜치에 자신의 이름을 추가한 text파일을 commit하기
이때 커밋 메시지는 myInfo 3이라고 작성해주세요😊
4) master 브랜치의 commit과 myInfo 브랜치의 commit 상태를 비교하기
master 브랜치로 체크아웃하기: 마우스 우클릭 > 체크아웃 master // 혹은 그냥 master를 더블클릭
5) myFavorite이라는 이름을 가진 브랜치를 master branch위에 생성
6) myFavorite 브랜치에 자신이 좋아하는 것을 text파일에 적고, commit
7) myInfo 브랜치와 myFavorite브랜치를 master브랜치에 합치기
- myInfo 브랜치를 master브랜치에 먼저 합치기
- myFavorite 브랜치도 master브랜치에 합치기
*이번에는 아마 충돌이 발생할 것입니다.
왜 발생하는 지 한번 예상해보고 따라와주세요😆
💥충돌발생💥
충돌이 발생한 이유 혹시 예상해보셨나요?
그 이유는 master브랜치의 text파일과, myFavorite브랜치의 text파일 내용이 충돌하기 때문입니다.
위 사진에서 볼 수 있듯이,
3행에서 master 브랜치는 I'm YeongSeon Jang이고
myFavorite 브랜치는 I like dancing이라고 되어 있기 때문에
충돌이 발생했습니다.
충돌이 나면, git은 충돌이 발생한 부분을 알려줍니다.
밑의 사진에서 text파일 내용을 한번 봅시다.
<<<<<<<<HEAD
/*HEAD가 가리키는 브랜치 내용*/
=======
/*myFavorite 내용*/
>>>>>>> myFavorite
따라서 충돌을 하기 위해서는 HEAD가 가리키는 브랜치와 myFavorite 브랜치 중에 하나를 택해야 합니다.
이는 밑에서 더 자세히 설명드리겠습니다.
8) 충돌 해결하기
충돌 해결하는 방법: 어떤 브랜치의 내용을 반영할 지 선택 -> 다시 커밋
'내것'을 이용해 해결=현재 branch로 선택
'저장소'것을 사용하여 해결=병합하려고 했던 branch로 선택
10. 브랜치 재배치 --공사 중
*참고자료: 모두의 깃&깃허브 - 강민철
'개발 지식 > Git&GitHub' 카테고리의 다른 글
[Git&GitHub] 4-2. GitHub (clone, push, patch, pull, pull request) (0) | 2024.05.25 |
---|---|
[Git&GitHub] 4-1. 깃허브 (Repository 생성 및 소스트리 연동) (0) | 2024.05.17 |
[Git&GitHub] 2-2. Git으로 버전관리 (revert, reset, stash) (0) | 2024.05.05 |
[Git&GitHub] 2-1. Git으로 버전관리 (add, commit, 태그) (0) | 2024.05.05 |
[Git&GitHub] 1. Git과 GitHub란? (feat. git 설치방법) (0) | 2024.05.05 |