-
Git - branch & conflictGit Github 2021. 3. 8. 14:16
브랜치
소프트웨어를 개발할 때 개발자들은 동일한 소스코드를 함께 공유하고 다룬다. 동일한 코드 위에서 버그를 수정하기도 하고 새로운 기능을 만들어 내기도 한다. 이와 같이 여러 사람이 동일한 소스코드를 기반으로 다른 작업을 할 때에는 서로 다른 버전의 코드가 만들어 질 수 밖에 없다.
이런 상황에서, 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 Branch다. 각자 독립적인 작업 영역(저장소) 안에서 다른 브랜치의 영향을 받지 않고 소스코드를 변경할 수 있다. 여러 작업을 동시에 진행할 수 있고 새로운 버전을 만들어 낼 수 있으며, 다른 브랜치와 병합(Merge)함으로써, 하나의 브랜치로 모을 수도 있다.브랜치 생성
저장소를 처음 만들면 Git은 master라는 이름의 브랜치를 생성한다. 다른 브랜치를 만들어서 이동하지 않는 이상 모든 작업은 master에서 이루어진다.
git branch : 현재 본인이 어디에 속해 있는지 알 수 있다
git branch "브랜치명" : 브랜치를 추가한다. ('*'는 현재 내가 속해 있는 장소를 보여준다.)
다른 브랜치들과 공유하고 있던 work.txt파일을 수정한 후 work4로 새롭게 커밋하면 master만 최신화 되었고, 나머지 브랜치들은 work3에 머물러 있다.
git checkout "브랜치명" : 해당 브랜치를 사용한다고 명시적으로 알려준다.
apple브랜치로 이동한 후, log를 살펴보면 HEAD가 apple로 향하는 것을 확인할 수 있다. work.txt파일도 수정 전의 파일로 바뀐 것을 확인할 수 있다.
새롭게 apple.txt를 생성한 후 커밋을 실행하면 'apple branch'가 독립적으로 갱신된 것을 확인할 수 있다.
브랜치 병합(Merge)
merge를 사용하면 여러 개의 브랜치를 하나로 모을 수 있다.
ex)
manual-merge폴더에 work.txt 파일을 만든 후 위의 사진과 같은 텍스트를 입력한다.
o2 branch를 만든후
work.txt의 첫번째 타이틀을 content에서 master content로 수정하고 commit한다.
o2 branch로 이동한 후 work.txt의 두번째 타이틀을 content에서 o2 content로 수정하고 commit한다.
master와 o2를 병합(merge)하기 위해선 branch를 master로 이동한 후 merge 명령어를 통해 병합한다.
병합 후 work.txt를 확인해보면 first title에는 master content가 second title에는 o2 content가 모두 적용된 것을 볼 수 있다. (두개의 branch가 다른 부분을 병합했기 때문에 문제(충돌) 없이 병합할 수 있었다.)
master branch와 o2 branch의 work.txt에 위의 그림과 같이 텍스트를 적고 병합(merge)을 시도한다.
그러나 충돌(conflict)이 일어나 자동적으로는 병합(merge)이 안된다.
work.txt파일을 들어가보면 이렇게 깨져있다. nano명령어를 통해 파일을 정리해주자.
파일을 정리한 후 commit을 하면 충돌 없이 처리된 것을 확인할 수 있다.
'Git Github' 카테고리의 다른 글
Git 교과서 03 (병합과 충돌) (0) 2021.12.15 Git 교과서 02 (임시처리) (0) 2021.12.15 Git 교과서 01 (0) 2021.12.13 Git 버전관리 (0) 2021.03.05 POSIX CLI (0) 2021.03.04