다른 분기를 체크 아웃하지 않고 현재 분기를 다른 분기로 병합하려면 다음을 수행하십시오.
빨리 감기 병합
정말 쉽습니다. 정의에 따르면 빨리 감기 병합은 단순히 분기 포인터가 커밋 트리에서 앞으로 이동 함을 의미합니다. 따라서 다음을 시뮬레이션하기 만하면됩니다 .
git branch -f master dev
주의 사항 : 이것은 분기 또는 다른 분기 master
에있는 커밋 을 가리키는 것으로 가정합니다 dev
. 그렇지 않으면 작업 손실이 발생할 위험이 있습니다! git merge
빨리 감기가 불가능할 때 병합 커밋을 생성하거나 불평하는 것과 달리이 방법은 자동으로 강제 실행됩니다. 으로 분기 포인터가 다른 커밋을 가리 키도록합니다.
이것은 또한 당신이 repo에서 일하는 유일한 사람이고 / 또는 당신이하는 일을 알고 있다고 가정합니다.
팁 : 당신이를했다면 git fetch
당신은 새로운 커밋이 origin/master
당신이 이동할 수, master
사용하여 확인하지 않고 지점 :
git branch -f master origin/master
병합 커밋을 통한 병합
항상 가능하지는 않습니다. 병합 커밋을 만들려면 병합 작업을 수행해야합니다. 병합 작업을 수행하려면 현재 분기에없는 다른 분기에 커밋이 있어야합니다.
master
지점에 커밋이 있는 경우 하지 에 dev
, 당신이 할 수있는 지점 :
면책 조항 : 이것은 단지 개념 증명이며, 때로는 그것을 보여주는 것입니다. 입니다. 체크 아웃하지 않고 다른 지점으로 병합하는 것이 가능하다는 것을 위해서입니다. 매일 사용하고 싶다면 쉘 리디렉션을 사용하여 별칭을 만들거나 쉘 스크립트를 만들고 싶을 것입니다. 그런 다음 질문에 표시된 더 짧은 프로세스를위한 쉘 스크립트를 만들 수도 있습니다.
git checkout -b temp
git merge --no-ff -e master
git branch -f master temp
git checkout dev
git branch -D temp
설명:
- 현재 브랜치와 동일한 커밋을 가리키는 임시 브랜치를 확인하십시오.
master
임시 브랜치로 병합 하고 커밋 메시지 편집기를 시작하십시오. 병합 커밋을 분기를에 병합 한 것처럼 보이게 하려면 다음에서 편집하십시오.dev
master
Merge branch 'master' into temp
이에:
Merge branch 'dev'
팁 :-m "Merge branch 'dev'"
대신 사용할 수 있습니다-e
더 빨리 .
- 업데이트
master
병합 커밋을 가리 키도록 분기 포인터를 .
- 확인
dev
지점을 .
- 임시 분기를 강제로 삭제하십시오.
이것은 여전히 작업 트리에 닿지 만 최소한입니다. master
개발 변경 사항을 다시 한 번 가져 오기 위해 트리를 원래 상태로 되돌릴 수는 없습니다 . 어떤 사람들은 신경 쓰지 않을 수도 있지만 다른 사람들에게는 중요 할 수도 있습니다.