ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Git - branch & conflict
    Git Github 2021. 3. 8. 14:16
    브랜치
    소프트웨어를 개발할 때 개발자들은 동일한 소스코드를 함께 공유하고 다룬다. 동일한 코드 위에서 버그를 수정하기도 하고 새로운 기능을 만들어 내기도 한다. 이와 같이 여러 사람이 동일한 소스코드를 기반으로 다른 작업을 할 때에는 서로 다른 버전의 코드가 만들어 질 수 밖에 없다.

    이런 상황에서, 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 Branch다. 각자 독립적인 작업 영역(저장소) 안에서 다른 브랜치의 영향을 받지 않고 소스코드를 변경할 수 있다.  여러 작업을 동시에 진행할 수 있고 새로운 버전을 만들어 낼 수 있으며, 다른 브랜치와 병합(Merge)함으로써, 하나의 브랜치로 모을 수도 있다.

     

    브랜치 생성

    저장소를 처음 만들면 Git은 master라는 이름의 브랜치를 생성한다. 다른 브랜치를 만들어서 이동하지 않는 이상 모든 작업은 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를 사용하면 여러 개의 브랜치를 하나로 모을 수 있다.

     

    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
Designed by Tistory.