실제로 병합하지 않고 병합을 테스트하는 방법 방법이 있습니까? 내가해야 할 때 종종 갈등이 발생합니다

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.

두 가지의 차이점을 아는 Sourcetree의 기능

그러면 소스 트리는 브랜치를 기본 브랜치로 병합하면 병합 될 모든 수정 사항을 표시합니다.

결과

물론 충돌을 보여주지는 않지만 병합에 유용한 도구입니다.