브랜치 (Branch) : 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어주는 기능. 독립적인 저장소에서 마음대로 소스코드 변경
브랜치 : 독립적인 저장소
각각 브랜치들이 서로 영향 받지 않아서 여러 작업 동시에 가능
만들어진 브랜치들은 다른 브랜치와 병함(merge) -> 작업한 내용을 다시 하나의 브랜치로 모은다
메인 브랜치에서 자신의 작업 전용 브랜치를 만든다
-> 각자 작업이 끝나면 메인 브랜치에 자신의 브랜치 변경 사항 적용
-> 하나로 모은다
master branch : 처음 저장소 만들면 git이 만드는 브랜치. 메인 브랜치
초기 설정된 master(main)에서 선택된 브랜치로 바꿈(Checkout 이용)
HEAD : 현재 사용 중인 브랜치의 선두부분. HEAD 이동시 사용하는 브랜치 변경. (마지막 커밋 지점..?)
stash : 일시적으로 변경 내용을 다른 곳에 저장 (충돌 피하기 위해). 그 다음 checkout
커밋하지 않은 변경을 일시적으로 저장
병합 : 작업이 완료된 토픽 브랜치를 최종적으로 통합브랜치에 병합. merge, rebase로 가능
merge : 여러 개의 브랜치를 하나로 모음
rebase : 브랜치의 base를 옮김 -> 브랜치 병합
master에 파일을 하나 만든다 -> 각각의 브랜치에서 같은 부분 수정 후 add, commit -> master에서 각각 브랜치를 merge -> 충돌 일어남 (변경 이력을 저장(merge)하지 않고 같은 부분을 수정해서)
충돌 일어난 상태
충돌이 일어남 -> 파일을 열어서 수동으로 수정 -> 다시 커밋
수동으로 최종 수정된 파일