git 에는 branch
라는 개념이 있습니다. (github 의 기능 ❌, git 자체적인 기능 ✅)
branch
는 분기
라는 뜻을 가지고 있는데요, 말그대로 버전 관리의 분기점을 만드는 기능입니다.
git branch [생성할 브런치 명]
branch 를 새로 생성하는 명령어.
git branch --list
branch의 목록들을 보는 명령어.
git switch [이동할 브런치 명]
이동하고 싶은 branch로 전환 하는 명령어.
git branch -D [삭제할 브런치 명]
branch를 삭제하는 명령어.
git merge
는 서로 다른 branch 의 작업 내용을 하나의 branch 로 통합하기 위한 명령어.
💡 중요한 것은 통합 (merge) 자체가 새로운 커밋이 되어서 기록이 남게된다는 점입니다.
merge conflict 는 git 이 하나의 파일 (의 commit 기록) 을 합치면서, 정확히 어떻게 합쳐야할지를 결정할 수 없을 때 발생
➡️ 대표적으로 merge conflict 가 발생하는 상황은 ‘같은 파일의 같은 부분을 수정했을 때’
해결 하는 방법
accept current change
를 누르면 현재 우리가 있는 main 브랜치의 내용을 따르게 되고, accept incoming change
를 누르면 병합하는 develop 브랜치의 내용을 따르게 되고, accept both changes
를 누르면 두 브랜치 내용 모두를 담게됩니다.아래와 같은 상황에서 Merge를 한다면 어떤 일이 발생할까요
merge를 하게되면 동시에 새로운 줄기로 커밋이 나게 되는데, 코드상에서 겹치는 부분이 없다면
자동적으로 Fast-forward로 merge를 하기 때문에 새로운 줄기의 커밋기록이 아닌 기존에 있던
줄기가 이어지게 됩니다. (아래 사진 참고)
만약 아까처럼 줄기가 나눠진 형태로 커밋 기록을 남기고 싶다면? 아래와 같이 --no-ff
를 붙여서 merge 명령어를 입력하면 됩니다. (non fast forward 의 약자입니다.)
git merge develop --no-ff
‘내 담당 브랜치에서 작업이 완료되었으니, 이 브랜치의 코드를 가져가서 병합해주세요’ 라는 요청을 보내는 것