하나의 프로젝트에 여러가지 구현 작업이 있을 떄, 독립적인 구현 작업을 가능하도록 한다.
git repository에서 main 브랜치가 디폴트 브랜치이다.
main 브랜치는 git repository를 만들 때 자동 생성된다.
최종적인 구현 결과물을 올려야 하는 브랜치이다.
어느 새로운 구현을 해야할 떄, 안정적인 최종 구현 결과물인 메인 브랜치를 벗어나 새 브랜치를 만들어 구현 작업을 시작한다.
이후 구현이 되었다면 바로 메인 브랜치로 merge하는 것이 아닌, 작업 블랜치에 main 브랜치를 가져와 버그(충돌) 테스트를 하고 main branch에서 작업 브랜치를 가져와 병합하는것이 바람직하다. (JUnit 단위 테스트를 구현해야)
소스코드를 수정하고 커밋을 하면, 이 커밋은 현재 작업 브랜치에 소속된다.
git repository에 HEAD 라는 이름의 참조가 있다. 이 참조는 현재 브랜치를 가르킨다. (현재 작업 브랜치의 최신 커밋을 가르킨다)
즉, 어느 프로젝트를 진행할 떄, 여러가지 기능을 구현해야하는 상황을 생각하면
메인으로 A 기능을 구현하고 B와 C를 구현을 각 브랜치에서 진행한다.
B 기능 구현 후 추가적으로 B++ 기능을 구현하고 A와 B++를 병합을 하면
이것은 Fast_forward 병합이라고 한다.
Fast_forward병합은 메인 브랜치의 최신 커밋이 부모 커밋이고 B의 브랜치의 최신 커밋(B++구현)이 자식 커밋이므로 메인 브랜치 레이블만 앞으로 이동하는 병합이 되는 것을 의미한다.