1) 브랜치
그 동안은 master라는 하나의 브랜치 위에서만 커밋, 푸쉬 등을 진행했다.
하지만 분업을 하다보면 각 작업자들마다 각자의 흐름이 형성되며, 이를 하나의 공간에서 처리하기란 어려워진다.
이 때문에 git에서는 브랜치(branch)라는 개념을 두어 따로 버전 관리를 할 수 있게 하고,
이 중 확실한 부분만 master, 즉 메인 브랜치에 합치는 기능을 제공하고 있다.
git branch
작업 폴더에서 git bash를 연 다음, 위 명령어를 사용하면 현재 브랜치 목록을 확인할 수 있다.
브랜치 생성을 하지 않은 상태라면 master라는 브랜치명만 뜰 것이다
git branch (브랜치 이름)
위 명령어를 통해 새로운 브랜치를 생성할 수 있다.
이후 'git branch'
를 한 번 더 실행하면 생성한 브랜치명이 뜰 것이다.
아마 master 앞에만 '*'가 있을 터인데, 이는 현재 속해있는 브랜치란 뜻이다.
git checkout (브랜치 이름)
브랜치 간을 이동할 수 있는 명령어이다.
2) 머지 (merge)
브랜치를 이동하고 그 위에서 작업할 수 있게 되었다. 하지만 특정 시점에서는 브랜치들의 내용이 합쳐져야 할 것이다.
브랜치 간의 병합을 머지(merge)라고 한다. 머지의 경우는 세 가지가 있다.
1. 병합 커밋 (Merge commit)
동일한 사람이 있다고 할 때,
모자를 쓴 상태의 브랜치에 신발을 신은 상태의 브랜치를 병합한다면 (합집합 연산과 같다)
모자를 쓰고 신발은 신은 상태의 새로운 커밋이 생기게 될 것이다. 이 커밋을 병합 커밋이라 한다.
2. 빨리 감기 (Fast-forward)
이번엔 아무 것도 착용하지 않은 상태의 브랜치에 모자를 쓴 상태의 브랜치를 병합한다고 생각해보자.
병합의 결과물이 원래의 모자쓴 브랜치와 동일하다. 따라 병합 커밋처럼 새로운 커밋을 생성할 필요없이
덮어쓰기를 해준다. 이가 Fast-forward 병합이다.
3. 충돌(Conflict)
이번엔 모자를 쓴 상태의 브랜치와 헬멧을 쓴 상태의 브랜치를 병합한다 가정하자.
모자와 헬멧은 동시에 착용할 수 없으니, git 입장에서는 이를 어떻게 처리할 지 모르게 된다.
이를 충돌이라 부른다.
머지의 방법은 다음과 같다.
원하는 브랜치로 'checkout'을 통해 이동한 후에,
git merge (브랜치명)
를 실행하면 두 브랜치를 병합할 수 있다.
하지만 앞서 말했듯 이 과정에서 충돌이 발생할 수 있고 특히 master 브랜치는 작업의 중심이 되는 브랜치기에
충돌 상태로 두어선 안된다. 이를 위해 사용할 수 있는 좀 더 안전한 방법이 풀 리퀘스트이다.
이에 대해 다음 포스트에 다루도록 하겠다.
'대딩 기록(~22.01) > Git & Github 공부노트' 카테고리의 다른 글
[Git] 풀 리퀘스트와 포크 (pull request, fork) (0) | 2021.07.31 |
---|---|
[Git] 레포지토리와 푸시,클론,풀(push,clone,pull) (0) | 2021.07.29 |
[Git] 로컬 스토리지 (0) | 2021.07.29 |