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