기록을 다시 쓰지 않고 Git에서 병합 커밋을 되돌리는 방법
병합 커밋에는 두 개의 상위 항목이 있으므로 Git은 어느 쪽을 유지할지 알아야 합니다. 다음은 상위 항목을 선택하고, 공유 분기에서 안전하게 병합을 취소하고, 나중에 작업을 다시 가져오는 방법입니다.
작성자: Kodmora
GitTree 뒤에 있는 소프트웨어 하우스
- 병합
- 실행 취소 및 복구
- 커밋 기록
이 페이지에서
병합 커밋을 되돌리려면 `git revert -m 1 <merge-commit>`을(를) 실행하세요. -m 1는 Git에게 병합한 브랜치인 첫 번째 상위 항목을 유지하고 병합으로 가져온 모든 것을 실행 취소하라고 지시합니다. Git은 새 커밋을 추가하므로 기록이 그대로 유지되고 수정 사항이 공유 브랜치에 안전하게 푸시됩니다.
병합 커밋을 어떻게 되돌리나요?
먼저 병합 커밋을 찾으세요. 그래프는 두 상위 요소가 있는 커밋으로 표시됩니다.
git log --oneline --graph -10그런 다음 부모를 확인합니다. 커밋 후 인쇄된 첫 번째 해시는 상위 1이고 두 번째 해시는 상위 2입니다.
git log -1 --format="%h parents: %p" <merge-commit>상위 1을 유지하면서 되돌리고 다른 커밋과 마찬가지로 새 커밋을 푸시합니다.
git revert -m 1 <merge-commit>
git push아무것도 다시 작성되지 않으므로 누구도 재설정하거나 강제로 끌어올 필요가 없습니다. 되돌리기가 충돌하는 경우 파일을 수정하고 준비한 후 git revert --continue을(를) 실행하세요. 취소하려면 git revert --abort을 실행하세요.
Git에서 "커밋은 병합이지만 -m 옵션이 제공되지 않았습니다"라고 말하는 이유는 무엇입니까?
일반 커밋에는 상위가 하나 있으므로 차이점이 분명합니다. 병합 커밋에는 두 개가 있으므로 git revert <merge-commit>은(는) 어느 쪽으로 돌아가고 싶은지 알 수 없습니다. Git은 이 오류로 인해 중지되고 아무것도 변경되지 않습니다.
error: commit 4f2a9c1 is a merge but no -m option was given.
fatal: revert failed상위 번호와 함께 -m을 추가하고 다시 실행하세요.
-m 1 또는 -m 2를 사용해야 합니까?
| 옵션 | 유지 | 다음과 같은 경우에 사용하세요. |
|---|---|---|
-m 1 | 병합한 분기(예: main) | 기능이 병합되었으므로 제거해야 합니다. 이것은 일반적인 경우입니다. |
-m 2 | 병합된 브랜치 | main을(를) 기능 분기로 끌어왔고 main에서 나온 것을 제거하려고 합니다. |
되돌리기 후에 동일한 분기를 어떻게 다시 병합합니까?
이것이 함정입니다. Git 문서에 따르면 병합을 되돌리는 것은 "병합으로 인한 트리 변경을 결코 원하지 않을 것임을 선언하는 것"입니다. 브랜치의 커밋은 여전히 main의 상위 항목이므로 두 번째 git merge는 되돌리기 이후에 만들어진 커밋만 가져옵니다.
원본 작업을 다시 가져오려면 먼저 되돌리기를 되돌린 다음 고정 분기를 병합하세요.
git revert <revert-commit>
git merge feature/search병합이 아직 푸시되지 않은 경우에는 어떻게 되나요?
되돌리기를 추가하는 대신 병합을 삭제할 수 있습니다. Git은 ORIG_HEAD에 병합하기 전에 커밋을 기록하고 --merge는 재설정으로 덮어쓰게 될 관련 없는 로컬 편집 내용을 건드리지 않습니다.
git reset --merge ORIG_HEAD병합이 아직 진행 중이고 충돌이 있는 경우 아직 병합 커밋이 없으므로 git merge --abort을 사용하세요. 너무 멀리 나아가면 재설정, 리베이스 또는 커밋을 실행 취소하는 방법을 읽고 이 선택의 이면에 있는 규칙에 대해서는 공유 기록에서 되돌리기 및 재설정 강의를 읽어보세요.
GitTree에서 병합 커밋을 되돌리는 방법
커밋 메뉴 열기
커밋 그래프에서 병합을 찾아 마우스 오른쪽 버튼으로 클릭합니다.
커밋 되돌리기를 선택하세요.
병합에는 두 개의 상위가 있으므로 GitTree는 어느 것을 기준으로 측정할지 묻습니다. 첫 번째 상위(병합된 분기)가 일반적인 선택이고 두 번째 상위(병합된 분기)가 다른 하나입니다.
결과 확인
GitTree에는 Reverted.라고 표시되며 새 커밋은 브랜치의 맨 위 행에 있습니다. 충돌하는 경우 파일을 해결하고 계속을 누르거나 중단…을 눌러 되돌아가세요.
한 번에 여러 커밋을 포함한 전체 가이드는 GitTree에서 체리 선택 및 되돌리기를 참조하세요.

자주 묻는 질문
git revert는 병합 커밋을 삭제합니까?
아니요. 병합은 기록에 남습니다. Git은 변경 사항을 취소하는 새로운 커밋을 추가하므로 공유 브랜치에서는 안전합니다.
git revert에서 -m 1은 무엇을 의미합니까?
유지할 메인라인 부모의 이름을 지정합니다. 상위 1은 병합을 실행할 때 있었던 분기이므로 -m 1는 다른 분기에서 가져온 항목을 제거합니다.
이미 푸시된 병합을 되돌릴 수 있나요?
예, 그리고 그것은 이에 적합한 도구입니다. 되돌리면 커밋이 추가되므로 정상적으로 푸시하면 누구도 아무것도 다시 작성할 필요가 없습니다.
두 번째 병합으로 인해 아무것도 반환되지 않은 이유는 무엇입니까?
되돌린 브랜치의 커밋은 이미 기록에 있으므로 Git은 이를 병합된 것으로 처리합니다. 되돌리기 커밋을 되돌린 후 다시 병합하세요.
아직 진행 중인 병합을 어떻게 실행 취소하나요?
git merge --abort을(를) 실행하세요. 병합을 중지하고 파일을 시작하기 전의 상태로 되돌립니다.
출처
다른 제품에 대한 주장은 2026년 11월 7일의 공식 페이지에서 확인되었습니다. 가격과 기능은 변경됩니다. 공급업체 페이지가 진실의 원천입니다.