programming/git

소스트리(source tree) 이용해서 git 사용하기③

dmchoi 2021. 3. 1. 02:01

Branch

마치 두 개의 프로젝트 폴더를 따로 가지고 작업을 한 것과 같은 효과를 내면서 이 작업이 끝났을 때, 실험적인 작업에서 변경된 내용을 오리지널 소스로 매우 간편하게 병합할 수 있다.

각 브런치는 프로젝트 디렉토리를 카피한 것과 같은 효과를 가진다.

 

mater branch : 저장소를 만들 때 기본적으로 만들어지는 브랜치

merge(병합) : 실험 브랜치에서 했던 작업들을 마스터 브랜치에 합침. 받는 쪽 브랜치를 선택(checkout) 한 후 가져오려는 브랜치 우클릭 - 현재 브랜치로 병합(Merge 브랜치이름 into current branch)

 

css태그 추가 버전에서 실험1 브랜치를 생성했더니 그래프에 변화가 생김. 파란색은 마스터 브랜치 분홍색은 실험1 브랜치를 나타냄
두 브랜치를 병합한 결과. 병합 동시에 커밋이 실행 됨

Conflict(충돌)

브랜치들이 서로 같은 곳을 수정했을 때, 버전관리 시스템이 자동을 병합해 줄 수 없어 사용자에게 그 문제를 해결하라고 함

 

서로 같은 부분을 수정한 브랜치들을 병합했을 때

마스터 브랜치와 실험1 브랜치가 다른 내용을 갖고 있지만 같은 위치를 수정했기 때문에 git 입장에서는 어떻게 처리해야할지 판단할 수 없어서 사용자에게 위임함

수정 후 - 충돌해결(resolve conflicts) - mark resolved : 내가 충돌을 해결했다고 git에게 알려줌

 

커밋하면 

----------------------------

Merge branch '실험1'

# Conflicts:

# index.html

------------------

내가 입력하지 않은 메세지가 나와있음 -> index.html에서 충돌이 일어났다.

 

충돌 최소화하기 

실험 브랜치는 언젠가 마스터 브랜치에 결합 될 것이다. 

실험 브랜치를 작업하기 전에 마스터 브랜치의 내용을 실험 브랜치로 가져옴

-> 마스터 브랜치의 변화를 계속해서 실험 브랜치로 옮겨오면서 실험 브랜치 작업을 해나가면 나중에 실험 브랜치와 마스터 브랜치를 병합했을 때, 충돌을 최소화하거나 없앨 수 있다.