특정 기준에서 줄기를 나누어 작업할 수 있는 기능을 브랜치라고 하며 브랜치를 만들지 않고 A, B가둘 다 커밋 2을 기준으로 커밋을 만들려고 한다면 오류가 나게 된다.

Git이 제공하는 기본적인 브랜치. 첫 번째 커밋을 하면 자동으로 master라는 이름의 브랜치가 커밋을 가리키고 새로 커밋을 할 때마다 master 브랜치의 포인터가 최신 커밋을 가리킨다.

커밋 2에서 새로운 A 브랜치를 만들면 master 브랜치와 동일하게 커밋 2를 가리킨다. A 브랜치에서 커밋을 한번 더 하면 A 브랜치가 master 브랜치보다 커밋 하나만큼 앞서게 된다.

master 브랜치에서 커밋을 하나 더 하면 A 브랜치와 master 브랜치는 갈라지게 된다. [HEAD] 라고 하는 브랜치 혹은 커밋을 가리키는 특수한 포인터를 이용해 브랜치 사이를 넘나들 수 있다.


웹 어플리케이션은 특성상 사용자는 항상 최신의 단일 버전만을 사용하므로 여러 버전을 병렬적으로 지원할 필요가 없다. 또한 웹 어플리케이션은 하루에 몇 번이고 릴리즈될 수 있다. 이런 특성상 웹 어플리케이션 개발에 Git Flow는 다소 적합하지 않다.

각자의 브랜치에서 개발이 완료 되면 [master] 브랜치에 작업물을 합쳐야 한다.

병합(Merge) : 두 버전의 합집합을 구하는 것으로 아래와 같은 세 가지 상황이 일어날 수 있다.
[master] 브랜치에서 [menu1] 브랜치를 병합하면 커밋 3는 커밋 2를 단순하게 수정한 수정본이므로 두 상태를 합치면 따로 바뀌는 상태 없이 커밋 3이 된다. 커밋 2를 가리키던 [master] 브랜치가 빨리 감기를 해서 커밋 3를 가리키게 된다.


[menu1] 브랜치의 모든 내용이 [master] 브랜치에 반영 되었으니 [menu1] 브랜치는 삭제 가능하다.
커밋 4는 커밋 2를 기준으로 변경 되었기 때문에 커밋 3과 커밋 4는 병합 커밋이 일어난다. 해당 병합을 [master] 브랜치에 올리거나, [menu2] 브랜치에 올리는 것 둘 다 가능하지만 [master] 브랜치에 올린다.


만약 커밋3과 커밋4가 같은 파일에 다른 수정을 한 경우 어느 쪽을 선택해야 할지 알 수 없어 충돌이 발생한다. 충돌을 피하기 위해서는 작업 디렉토리를 세세하게 분리하여 동일 디렉토리 내부에 작업하는 일이 없도록 하는 것이 좋다. 그럼에도 불구하고 충돌이 발생하는 경우에는 충돌 코드 수정 후 병합해야한다.