Git Branch와 Conflict

Develop My Life·2020년 8월 11일
0

Git

목록 보기
2/6

Branch

같은 뿌리에서 나왔지만 다른 기능을 구현할 수 있는 기능
하나의 저장소 안에 공통의 작업을 공유하면서도 각자 자신의 작업을 가지는 평행 우주를 가질 수 있다.
기본적으로 master Branch가 생성된다.

Conflict

Branch와 Branch를 병합할 때 나타날 수 있는 충돌 현상 -> 같은 파일의 같은 부분의 변경이 충돌할 때 발생

Merge

Branch와 Branch를 병합하는 기능
Git은 충돌이 나지 않는 곳은 3-way-merge 기법을 이용하여 자동으로 병합하고 충돌이 나는 곳은 알려주어 사용자가 직접 수정하도록 한다.

3-way-merge

Branch들의 공통의 조상을 Base로 지정하고 Base와 두 Branch를 비교하여 충돌이 일어나지 않는 곳은 자동으로 병합하고 충돌이 일어나는 곳은 사용자가 직접 수정하도록 한다.
이를 통해 2-way-merge 기법보다 훨씬 더 많은 부분을 자동으로 병합할 수 있도록 한다.

Merge의 과정

  1. 합쳐질 곳으로 checkout를 이용하여 해당 branch로 이동한다.
  2. git merge 'branch' 를 이용하여 해당 branch를 현재 있는 곳에 병합하여 새로운 commit을 생성한다.

Git 명령어

  • git branch : 현재 생성되어 있는 Branch를 보여준다, * 가 현재 HEAD가 가리키는 Branch이다.
  • git branch branch 이름 : 해당 이름으로 하는 Branch를 생성한다.
  • git checkout branch 이름 : 해당 Branch로 HEAD 변경
  • git commit --amend : commit message를 변경하는 기능
  • git merge branch 이름 : 해당 Branch를 현재 위치해 있는 Branch와 병합하여 commit 한다.
  • git log --all --graph --oneline : git의 기록을 볼 수 있는 기능으로 옵션으로 모든 기록(--all)을 도식화(--graph)하여 각각 한 줄(--oneline)로 보여주는 기능이다.

참고사항

  • git workflow를 검색하여 git flow의 모범사례를 보고 좋은 협업의 과정을 알 수 있다.

  • cherry-pick(부분 병합) 기능도 있으니 참고하면 좋다.

  • rebase 기능은 효과는 Merge와 같지만 타임라인은 한 줄로 깔끔히 정리할 수 있는 기능이다.

0개의 댓글