git merge
현재 작업중인 지점과 마스터 인 두 지점 사이 를 시뮬레이션 할 수있는 방법이 있습니까?
내가해야 할 때 종종 갈등이 발생합니다 git merge
. 병합을 먼저 시뮬레이션하는 방법이 있습니까?
답변
병합을 시도 할 때까지 어떻게 될지 시뮬레이션하는 방법이 없다고 생각합니다. 그러나 git status
병합을 수행하기 전에 출력 이 비어 있는지 확인한 후에 시도해 보는 것이 안전합니다. 갈등이 발생하면 즉시 이전 상태로 돌아갈 수 있습니다.
git reset --merge
git 1.7.4부터 다음을 수행하여 병합을 중단 할 수도 있습니다.
git merge --abort
( 해당 옵션을 추가 한 커밋 메시지에 설명되어 있듯이 이는 일관성 등을 위해 추가되었습니다 git rebase --abort
.)
답변
git merge --no-commit
병합이 실제로 커밋되지 않도록하는 데 사용할 수 있으며 , 병합 방식이 마음에 들지 않으면 원래 헤드로 재설정하십시오.
병합이 빨리 진행되고 있어도 정의에 따라 충돌이없는 경우에도 병합을 완료하지 않으려는 경우에도 추가 할 수 있습니다 --no-ff
.
답변
주제 분기의 변경 사항을 마스터와 비교하려면 다음을 수행하는 것이 가장 쉽고 안전합니다.
git checkout master
git checkout -b trial_merge
git merge topic_branch
병합을 완료하면 마스터에서 통합 된 변경 사항을 쉽게 확인할 수 있습니다.
git diff master
완료되면 간단히 trial_merge 분기를 삭제하십시오.
git checkout master
git branch -D trial_merge
이런 식으로 마스터 브랜치는 변하지 않습니다.
답변
나는 사용한다 :
git merge --ff-only
설명서 에 따르면 :
현재 HEAD가 이미 최신 상태이거나 병합을 빨리 진행할 수있는 경우가 아니면 0이 아닌 상태로 병합 및 종료를 거부하십시오.
두 브랜치 사이에 충돌이없는 경우 빨리 병합되기 때문에 실제로는 시뮬레이션이 아닙니다. 그러나 갈등이 발생하면 통보를 받고 아무 일도 일어나지 않습니다.
답변
git merge --abort
최근에을 사용할 수있었습니다 . 그러나 병합 충돌이있는 경우에만 사용할 수 있습니다. 커밋하지 않으려면 위에서 언급 한 다른 방법을 사용하십시오.
답변
왜 버리기 분기 (git checkout -b)를 만들고 테스트 병합을 수행하지 않습니까?
답변
나는 그것이 당신의 경우인지 정확히 알지 못하지만 귀하의 질문은 때로는 기능을 시작하고 며칠 동안 커밋하고 개발을 여러 번 병합한다는 것을 기억합니다.
이 시점에서 내가 변경 한 정확한 파일에 대한 제어 권한을 잃어 버렸고 기능이 닫히고 코드가 개발 될 때만 알 수 있습니다.
이 경우 소스 트리를 사용하여 어떤 수정 작업을 수행했는지 알 수있는 좋은 방법입니다 (병합이 아닌 다른 방법).
기본 분기에서 오른쪽 버튼을 클릭하고 다음을 선택해야합니다 Diff Against Current
.
그러면 소스 트리는 브랜치를 기본 브랜치로 병합하면 병합 될 모든 수정 사항을 표시합니다.
물론 충돌을 보여주지는 않지만 병합에 유용한 도구입니다.