콘텐츠로 건너뛰기
GitTree
Git 가이드3분 읽음

하나의 Git 브랜치를 다른 브랜치에 병합하는 방법

병합에는 두 가지 명령이 필요하지만 방향 때문에 사람들이 넘어지고 Git은 빨리 감거나 병합 커밋을 생성할 수 있습니다. 정확한 순서, 빨리 감기의 의미, 언제 사용할 옵션은 다음과 같습니다.

작성자: Kodmora

GitTree 뒤에 있는 소프트웨어 하우스

게시됨 업데이트됨
  • 병합
  • 브랜치
  • 병합 충돌
이 페이지에서

`feature`을(를) `main`에 병합하려면 커밋을 받는 분기로 전환한 다음 다른 분기(`git switch main`와 `git merge feature`)를 병합합니다. 현재 있는 분기가 변경되는 분기입니다. main에 새 커밋이 없으면 Git은 이를 빨리 감습니다. 그렇지 않으면 병합 커밋이 생성되고 양측이 충돌하면 중지됩니다.

단계별로 분기를 어떻게 병합합니까?

# get the latest
git fetch origin

# go to the branch that receives the work
git switch main
git pull --ff-only

# bring the other branch in
git merge feature/search

# publish it
git push

깨끗한 트리로 시작하세요. 먼저 커밋하거나 숨김하세요. 도중에 마음이 바뀌면 `git merge --abort`가 다시 돌아옵니다.

병합은 어느 방향으로 진행되나요?

git merge X은 항상 "내가 있는 브랜치로 X를 가져옵니다"를 의미합니다. 따라서 feature를 main에 병합하는 작업은 main에서 수행되고, feature을 최신 main으로 업데이트하는 작업은 feature에서 수행됩니다.

# keep a feature branch up to date
git switch feature/search
git fetch origin
git merge origin/main

빨리 감기 병합이란 무엇입니까?

다른 브랜치가 떠난 이후 수신 브랜치에 자체 커밋이 없으면 결합할 것이 없습니다. Git은 브랜치 포인터를 다른 브랜치의 최신 커밋으로 이동하고 병합 커밋을 추가하지 않습니다. 역사는 직선을 유지합니다. 이런 일이 발생하면 Git은 Fast-forward을 인쇄합니다.

# before
main:    A---B
              \
feature:       C---D

# after a fast-forward merge
main:    A---B---C---D

두 브랜치 모두에 새로운 커밋이 있으면 빨리 감기가 불가능하므로 Git은 두 상위 브랜치와 병합 커밋을 만듭니다. 빨리 감기 학습 및 분산된 분기 병합 강의에서는 두 가지 실습을 모두 보여줍니다.

--ff-only, --no-ff 및 --squash는 무엇을 합니까?

git merge가 결과를 기록하는 방법
옵션결과다음과 같은 경우에 사용하세요.
(없음)가능하면 빨리 감기하고, 그렇지 않으면 병합 커밋대부분의 일상 병합
--ff-only빨리감기 또는 오류가 발생하여 중지원격에서 main 업데이트 중
--no-ff항상 병합 커밋각 기능이 기록에 표시되기를 원합니다.
--squash모든 변경 사항이 준비되었으며 커밋이나 병합이 기록되지 않았습니다.당신은 하나의 깔끔한 커밋을 원합니다
git merge --ff-only origin/main
git merge --no-ff feature/search

git merge --squash feature/search
git commit -m "feat(search): quick open"

병합이 충돌하면 어떻게 되나요?

Git이 중지되고 충돌하는 파일을 표시합니다. 각각 git add 편집한 다음 git commit을 실행하여 병합을 완료합니다. 병합 충돌을 해결하는 방법에서 마커에 대해 설명합니다.

자동으로 한 쪽을 선택할 수 있나요?

# take their side wherever hunks conflict
git merge -X theirs feature/search

# take our side wherever hunks conflict
git merge -X ours feature/search

# during a merge, take one side of a whole file
git checkout --theirs path/to/file
git add path/to/file

병합해야 할까요, 아니면 리베이스해야 할까요?

Merge는 발생한 그대로 기록을 유지하고 커밋을 다시 작성하지 않으므로 공유 브랜치에서는 항상 안전합니다. Rebase는 다른 브랜치 위에서 직선으로 커밋을 재생하지만 다시 작성하므로 자신이 사용하는 브랜치에만 보관하세요. 병합과 리베이스 강의는 절충점을 따릅니다.

병합 후에는 어떻게 해야 하나요?

# check that the branch is fully merged
git branch --merged

# delete it locally and on the remote
git branch -d feature/search
git push origin --delete feature/search

분기 삭제 방법에서 정리를 다룹니다. 이미 푸시된 병합을 취소하려면 병합 커밋을 되돌리는 방법을 참조하세요.

GitTree에서 분기를 병합하는 방법

  1. 수신 브랜치를 확인하세요.

    develop과 같은 커밋을 수신해야 하는 분기를 두 번 클릭합니다.

  2. 병합할 브랜치를 선택하세요

    새 작업이 있는 브랜치의 레이블을 마우스 오른쪽 버튼으로 클릭하고 Merge … into …를 선택합니다. 한 라벨을 다른 라벨로 드래그할 수도 있습니다.

  3. 미리보기 읽기

    GitTree가 먼저 확인하고 충돌 없이 병합됩니다. 또는 충돌로 인해 중지될 파일을 알려줍니다.

  4. 기록 방법을 선택하세요.

    다른 이름으로 기록에서 가능한 경우 빨리 감기, 그렇지 않으면 병합 커밋, 항상 병합 커밋, 빨리 감기만 또는 스테이징된 변경 사항으로 스쿼시(커밋 없음)를 선택한 다음 병합을 누릅니다.

변경하기 전에 충돌 검사를 통해 기능/검색을 GitTree의 개발에 병합합니다.
변경하기 전에 충돌 검사를 통해 기능/검색을 GitTree의 개발에 병합합니다.데모 저장소와의 GitTree 인터페이스입니다.

모든 옵션은 브랜치 병합을 참조하세요.

자주 묻는 질문

병합하면 다른 분기가 삭제되나요?

아니요. 다른 브랜치는 원래 위치에 그대로 유지됩니다. 더 이상 필요하지 않으면 직접 삭제하세요.

GitHub의 브랜치를 기본으로 어떻게 병합합니까?

풀 리퀘스트를 열고 Merge를 누르세요. 대신 로컬로 병합하는 경우 나중에 main를 푸시하세요. 분기 보호에는 끌어오기 요청 경로가 필요할 수 있습니다.

"이미 최신 상태입니다"은(는) 무슨 뜻인가요?

현재 있는 브랜치에는 이미 다른 브랜치의 모든 커밋이 포함되어 있으므로 병합할 것이 없습니다. 올바른 분기에 있는지 확인하고 새 원격 커밋이 예상되면 git fetch를 실행하세요.

"관련 없는 역사 병합을 거부한다"는 것은 무엇을 의미합니까?

두 브랜치는 공통 커밋을 공유하지 않습니다. 이는 저장소가 두 번 초기화되었기 때문인 경우가 많습니다. 정말로 참여하고 싶다면 --allow-unrelated-histories을(를) 추가하세요.

스쿼시 병합은 실제 병합인가요?

스쿼시는 변경을 모아 스테이징하지만 커밋이나 머지 이력의 연결을 만들지는 않습니다. 직접 커밋해야 합니다. 이후에도 Git은 원본 브랜치가 머지되었다고 기록하지 않으므로 git branch -d가 삭제를 거부할 수 있습니다.

출처

다른 제품에 대한 주장은 2026년 11월 8일의 공식 페이지에서 확인되었습니다. 가격과 기능은 변경됩니다. 공급업체 페이지가 진실의 원천입니다.