원격 저장소에서 협업하기
Git에서 코드 병렬 버전 관리하는 법
commit은 줄줄이 연결되있으며 기존 커밋 다음에 시간순으로 로그가 남음
한 사람이 커밋을 할땐 브랜치(가지)를 나누지 않고 그냥 작업하면 되지만
여러사람이 같이 동시에 작업하기 위해선 기존 커밋에서 뻗어나가는 브랜치(가지)가 필요함
- 브랜치 - 특정한 시점에서 줄기를 나눠 작업할 수 있는 기능
우리는 ‘main’이라는 ‘브랜치’를 기본적으로 가지고 있음
특정 커밋에서 브랜치를 만들면 ‘main’과 ‘새로운 브랜치’ 2개가 모두 특정 커밋에 존재함
여기서 ‘main’에서 하는 커밋과, ‘새로운 브랜치’에서 하는 커밋은 달라서 서로 다른 줄기가 생기게 됨
"main"
commit1 <- commit2 <- commit3 <-commit4
<-commit5
"new branch"
#commit3에서 새로운 브랜치 생성 후 각 브랜치에서 커밋한 모습
이때 우리는 “HEAD”라는 포인터를 가지고 있으며 이는 쉽게 말해 ‘우리의 눈’이라고 생각할 수 있음
HEAD 포인터가 있는 커밋을 우리는 보고 수정할 수 있음
"main"&"HEAD"
commit1 <- commit2 <- commit3 <-commit4
<-commit5
"new branch"
#commit4에 "HEAD" 포인터가 존재하며 현재 commit4의 코드를 보고 수정할 수 있는 상태
HEAD 포인터는 각 브랜치와 과거 커밋을 이동할 수 있으며 이로 인해 우리는 브랜치과 과거 커밋으로 이동해 코드를 보고 수정할 수 있다.
HEAD가 main 브랜치로부터 떨어져 있는 상황을 detached head(떨어진 머리)라고 한다
브랜치 만들고 이동하기
소스코드로 새 브랜치 만들기
보통 하나의 개발 브랜치에는 한 사람만 작업해서 올리는 것이 버전이 꼬일 걱정이 없다
따라서 원격 저장소에 미리 규칙을 정해놓는 것이 좋다
e.g.
1. main 브랜치에는 직접 커밋 올리기 금지
2. 개발은 브랜치에서만
3. 개발 끝나면 main에 병합하기
소스트리 상단에 브랜치 버튼을 누르고 브랜치를 생성한다
브랜치를 만들고나면 오른쪽에 두꺼운 글씨로 브랜치가 생성된 걸 알 수 있다.
이 상태에서 다른 파일을 생성하거나 수정한 후 커밋을 하면 다음 그림과 같이 first/study-branch-1 브랜치 태그가 가리키는 커밋이 생성된다.
본인은 커밋을 하나 더 만들고 레포지토리에 푸쉬함
브랜치 이동하기
- checkout - 브랜치 이동 명령어
소스트리에서 체크아웃하려는(바꾸려는)브랜치에 우클릭해서 체크아웃을 누르면 해당 브랜치가 가르키는 커밋으로 이동이 가능함
브랜치와 브랜치 합치기
두 브랜치를 합치는 과정
- merge - git에서 두 브랜치를 합치는 명령어
병합(merge)의 3가지 종류
- 병합 커밋 - 서로 곂치지 않는 다른 부분이 있는 브랜치를 충돌 없이 합치는 것
- fast-foward - 최신 커밋의 수정사항만 반영하여 합치는 것
- conflict - 같은 위치의 다른 코드를 합칠
때 충돌이 일어나는 병합
main에 첫번째 브랜치 병합하기
main으로의 체크아웃 후 첫번째 브랜치가 가르키는 커밋을 우클릭해서 병합 클릭
병합 후 push 한 후의 화면
병합 커밋 만들기
위 병합 방법과 마찬가지로 병합 버튼을 누르면 충돌이 발생했다는 메세지가 발생함
그럼 충돌이 일어난 부분을 수정하고 ‘커밋되지 않은 수정사항’을 커밋
커밋 후 푸쉬하면 병합 커밋 만들기 완료
풀 리퀘스트([Pull Request)
- 풀 리퀘스트 - 협력자에게 브랜치 병합을 요청하는 메세지를 보내는 것
새로운 브랜치를 만들고 커밋을 한 후 깃허브에 들어가면 다음과 같은 버튼이 보임
풀 리퀘스트 시 다른 협업인들과 토론도 가능하며 병합을 반려하거나 수정사항을 알려줄 수도 있음
'[Git&GitHub]' 카테고리의 다른 글
[Git&GitHub] CLI 환경에 사용되는 기초 git 명령어 (0) | 2025.02.18 |
---|---|
[Git&GitHub] 포크(fork)와 리베이스(rebase) (0) | 2025.02.10 |
[Git&GitHub] SourceTree를 사용한 commit & push (0) | 2025.02.06 |
[Git&GitHub] Git과 GitHub 시작하기, 그리고 Git Bash를 활용한 Repository와 Local Storage 파일관리 기초 (1) | 2025.02.06 |