Menu
Coddy logo textTech

Git Merge

마지막 업데이트

git merge는 다른 브랜치의 커밋을 현재 브랜치로 가져옵니다. 현재 브랜치가 갈라지지 않았을 때 Git은 fast-forward를 수행하여 포인터를 앞으로 옮기기만 합니다. 두 브랜치 모두에 새로운 커밋이 있으면 Git은 두 히스토리를 하나로 연결하는 병합 커밋을 만듭니다. rebase와 달리 merge는 두 브랜치의 정확한 히스토리를 그대로 보존합니다.

터미널 플레이그라운드에서 직접 해보세요. 브라우저에서 실행되는 진짜 셸이며, 설치할 것이 없습니다.

구문

CommandWhat it does
git merge featurefeature를 현재 브랜치에 병합
git merge --no-ff feature항상 병합 커밋을 생성
git merge --ff-only featurefast-forward가 가능할 때만 병합
git merge --squash feature브랜치의 커밋들을 하나로 합침
git merge --abort충돌이 발생한 병합을 취소

Fast-forward vs 병합 커밋

ScenarioFast-forwardMerge commit (--no-ff)
새 커밋을 생성아니오
브랜치의 기록을 남김아니오
발생하는 경우현재 브랜치가 갈라지지 않음두 브랜치 모두에 새 커밋이 있음

병합 충돌 해결

두 브랜치가 같은 줄을 변경했을 때 Git은 잠시 멈춥니다.

StepCommandResult
1충돌한 파일을 편집올바른 줄을 선택하고 마커를 제거
2git add <file>충돌을 해결됨으로 표시
3git commit병합을 완료

git merge 자주 묻는 질문

Git에서 한 브랜치를 다른 브랜치에 병합하려면 어떻게 하나요?
병합할 대상 브랜치로 전환한 다음(예: git switch main) git merge feature를 실행하세요. Git은 feature의 커밋을 main으로 합치는데, fast-forward를 하거나 두 브랜치가 갈라진 경우 병합 커밋을 생성합니다.
fast-forward와 병합 커밋의 차이는 무엇인가요?
fast-forward는 다른 브랜치가 갈라진 이후로 현재 브랜치가 움직이지 않았을 때 발생합니다. Git은 새 커밋 없이 포인터를 앞으로 밀기만 합니다. 병합 커밋은 두 브랜치 모두에 새 커밋이 있을 때 생성되어 두 히스토리를 연결합니다. 항상 병합 커밋을 만들려면 --no-ff를, fast-forward를 강제하려면 --ff-only를 사용하세요.
병합 충돌은 어떻게 해결하나요?
병합에서 충돌이 발생하면 Git은 영향을 받은 파일에서 충돌하는 부분을 <<<<<<<, =======, >>>>>>> 마커로 표시합니다. 각 파일을 편집해 올바른 내용을 남기고 마커를 제거한 다음, 해결한 파일을 git add하고 git commit으로 병합을 마칩니다.
병합을 되돌리거나 중단하려면 어떻게 하나요?
병합이 아직 진행 중이라면(충돌 미해결) git merge --abort를 실행해 취소하고 병합 이전 상태로 되돌립니다. 병합이 로컬에서 이미 완료되었다면 git reset --hard ORIG_HEAD가 브랜치를 병합 이전 위치로 되돌립니다(HEAD~1과 달리 fast-forward 이후에도 정확하지만, 커밋하지 않은 작업은 버립니다). 병합이 푸시되었다면 git revert -m 1 <merge-hash>를 사용하세요.
이것을 온라인으로 연습할 수 있나요?
네. 터미널 플레이그라운드를 열어 브라우저에서 실행되는 진짜 셸로 git merge를 실행해 보세요. 설치할 것이 없습니다. Coddy의 무료 인터랙티브 Git 강좌에서도 병합과 충돌 해결을 단계별로 다룹니다.
Coddy programming languages illustration

Coddy로 Git 배우기

시작하기