-
git - branch & conflicttools/git 2024. 12. 3. 21:50
브랜치
소프트웨어를 개발할 때 개발자들은 동일한 소스코드를 함께 공유하고 다룬다. 동일한 코드 위에서 버그를 수정하기도 하고 새로운 기능을 만들어 내기도 한다. 이와 같이 여러 사람이 동일한 소스코드를 기반으로 다른 작업을 할 때에는 서로 다른 버전의 코드가 만들어 질 수 밖에 없다.
이런 상황에서, 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 Branch다. 각자 독립적인 작업 영역(저장소) 안에서 다른 브랜치의 영향을 받지 않고 소스코드를 변경할 수 있다. 여러 작업을 동시에 진행할 수 있고 새로운 버전을 만들어 낼 수 있으며, 다른 브랜치와 병합(Merge)함으로써, 하나의 브랜치로 모을 수도 있다.브랜치 생성
저장소를 처음 만들면 Git은 master라는 이름의 브랜치를 생성한다. 다른 브랜치를 만들어서 이동하지 않는 이상 모든 작업은 main(master)에서 이루어진다.
git branch : 현재 본인이 어디에 속해 있는지 알 수 있다
git branch "브랜치명" : 브랜치를 추가한다. ('*'는 현재 내가 속해 있는 장소를 보여준다.)
Head는 현재 어디에 속해있는지 가르킨다. apple, google, ms 브랜치를 추가한다. 다른 브랜치들과 공유하고 있던 work.txt파일을 수정한 후 work4로 새롭게 커밋하면 master만 최신화 되었고, 나머지 브랜치들은 work3에 머물러 있다.
git checkout "브랜치명" : 해당 브랜치를 사용한다고 명시적으로 알려준다.
apple브랜치로 이동한 후, log를 살펴보면 HEAD가 apple로 향하는 것을 확인할 수 있다. work.txt파일도 수정 전의 파일로 바뀐 것을 확인할 수 있다.
새롭게 apple.txt를 생성한 후 커밋을 실행하면 'apple branch'가 독립적으로 갱신된 것을 확인할 수 있다.
브랜치 병합(Merge)
merge를 사용하면 여러 개의 브랜치를 하나로 모을 수 있다.
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을 하면 충돌 없이 처리된 것을 확인할 수 있다. 'tools > git' 카테고리의 다른 글
git - 병합, 충돌, 배포, 태그 (1) 2024.12.04 git 교과서 수기 정리 (0) 2024.12.04