익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT 위키
검색
Git merge
편집하기
IT 위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
깃 머지(Git merge)는 두 개 이상의 브랜치의 변경 내역을 하나로 합치는 작업이다. 즉, 별도로 개발된 브랜치들의 커밋 흐름을 하나의 브랜치에 병합하여 통합된 히스토리를 만드는 방법이다. ==개념 및 원리== 머지는 공통 조상 커밋을 기준으로 각각의 브랜치 변경사항을 비교한 뒤, 공통 조상 이후의 변경을 한쪽 브랜치(현재 브랜치)에 반영하는 방식이다. 간단한 예를 들어보자:<syntaxhighlight lang="text"> A --- B --- C (feature) / D --- E --- F (main) </syntaxhighlight>위 상태에서 `feature` 브랜치를 `main` 브랜치로 병합한다고 하면:<syntaxhighlight lang="bash"> git checkout main git merge feature </syntaxhighlight>결과적으로는:<syntaxhighlight lang="text"> A --- B --- C (feature) / \ D --- E --- F ----------- M (main) </syntaxhighlight>여기서 '''M은 새롭게 생성된 병합 커밋'''이다. 이 병합 커밋은 양쪽 브랜치의 변경을 모두 포함한다. ==머지 방식 및 옵션== ===빠른 병합(Fast-forward merge)=== 만약 대상 브랜치가 병합하려는 브랜치를 이미 포함하고 있다면, Git은 단순히 브랜치 포인터를 앞으로 이동시키는 **fast-forward** 방식을 사용할 수 있다. 이 경우 별도의 병합 커밋 없이 브랜치가 “이어 붙는다”.<syntaxhighlight lang="bash"> git merge --ff-only feature </syntaxhighlight>병합 커밋 없이 브랜치가 뒤따라붙는 형태가 된다. ===병합 커밋 생성=== 병합 대상 브랜치가 공통 조상 이후로 변경이 있다면, Git은 새로운 병합 커밋을 생성한다. 이는 두 브랜치의 변경 내역을 모두 포함하는 새로운 커밋이다.<syntaxhighlight lang="bash"> git merge feature </syntaxhighlight> ===스쿼시 병합(Squash merge)=== 여러 커밋을 하나로 합쳐서 병합하고 싶을 때는 `--squash` 옵션을 사용한다. 이는 실제로는 병합(commit)을 하지 않고, 변경 사항을 staging 한 뒤 수동으로 커밋하게 한다.<syntaxhighlight lang="bash"> git merge --squash feature git commit </syntaxhighlight>단, 이 방식은 커밋 히스토리를 병합하지 않으며 브랜치 간 관계도 유지되지 않는다. ==충돌 및 해결== 브랜치 간 변경 사항이 겹치면 병합 충돌이 발생한다. 이 경우 Git은 자동 병합을 멈추고 충돌 파일을 표시한다. 사용자는 충돌을 수동으로 수정한 뒤 아래 명령으로 병합을 완료해야 한다:<syntaxhighlight lang="bash"> git add <충돌 수정한 파일> git commit </syntaxhighlight>머지를 중단하고 이전 상태로 되돌리고 싶다면:<syntaxhighlight lang="bash"> git merge --abort </syntaxhighlight> ==장점과 단점== ===장점=== *커밋 히스토리가 정확하게 보존된다. *두 브랜치의 모든 변경 내역을 반영할 수 있다. *팀 협업 시 작업 내역을 투명하게 병합할 수 있다. ===단점=== *병합 커밋이 많아질수록 히스토리가 복잡해질 수 있다. *잦은 충돌이 발생할 수 있으며, 특히 병렬 작업이 많을수록 충돌 관리가 어려워질 수 있다. *fast-forward 병합 시 브랜치 간 관계가 명확하지 않을 수 있다. ==사용 예시 및 팁== *기능 브랜치를 `main` 브랜치에 통합할 때 유용하다. *`--no-ff` 옵션을 사용하여 병합 커밋을 강제로 남기면 브랜치 병합 이력을 추적하기 쉽다. <syntaxhighlight lang="bash"> git merge --no-ff feature </syntaxhighlight> *자주 병합하면 충돌 가능성을 줄일 수 있다. *병합 전에 항상 `git fetch`로 최신 상태를 반영하고, `git status`를 확인하는 습관이 좋다. ==같이 보기== *[[Git rebase]] *[[Git 브랜치]] *[[Git commit]] *[[Git 워크플로우]] *[[Git merge vs rebase]] ==참고 문헌== *Git 공식 문서 — git‑merge 매뉴얼 *Scott Chacon & Ben Straub, ''Pro Git'' (Apress) ==각주== [[분류:형상관리]] [[분류:Git]]
요약:
IT 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT 위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록