제 의견으로는 현재 마스터에서 커밋 된 모든 것이 있는지 확인한 다음 거기에서 새 분기를 만듭니다. 그런 다음 로컬 마스터를 원격 마스터로 하드 재설정하십시오. 그런 다음 rebase 또는 cherry-이 변경 사항을 선택하십시오.
이
git branch tmp-master
git fetch origin
git reset --hard origin/master
지금 당신은 쉽게 두 가지의 차이점을 시각화를 사용할 수 있습니다 : 다음과 같은 뭔가
git log --decorate=short --oneline --graph --all
다른 커밋 체리 따기와 당신은 아마 될 것 가서 충돌을 고정 가장 쉬운 방법이지만 재베이스를 시도해 볼 수도 있습니다. 좀 더 구체적인 단계가 필요하면 알려주세요. 쓸 것입니다.
업데이트 : 이제
당신이 여기, 당신은 (master
에서) 시도 할 수 있습니다 :
git checkout tmp-master
git rebase master
git checkout master
git merge --ff tmp-master
git branch -d tmp-master
git push origin master
:
git merge tmp-master
하지만 당신은 할 수 있습니다 역사를 커밋 청소기에 대한
다음 시도
이것은 로컬 커밋을 취하여 원격 변경 사항 위에 다시 적용합니다. 근본적으로 동일한 작업을 수행하고 있지만 두 개의 다른 시스템에서 수행 중이므로 "잘 전환 된 시스템"이 커밋을 병합하지 않기를 바랄 것입니다.
이제는 충돌이있을 수 있습니다. 그것들을 돌볼 몇 가지 방법이 있습니다. 당신이 충돌을 가지고 로컬 변경 후 다음과 같이 우선 순위가 걸릴 알고합니다 (tmp-master
지점에서 가정을하고 REBASE에서 충돌이) 경우
git rebase --abort
git branch tmp-master-save
git rebase -X theirs master
모든 것을 위의 단계 git checkout master
부터 계속 잘 보이는 경우 확인 . 다른 tmp-master-save
분기도 삭제해야합니다. 안전한 보관을 위해 만들어졌습니다. 당신이 이것에 초보자 일 때 안전 메커니즘을 갖는 것이 항상 낫습니다.
나는 당신의 명령을 실행했다. 그리고 이것은 상황이다. 나는 로그에서 원격으로 밀어 넣어야 만하는 커밋을 가지고있는 로컬 tmp-master를 가지고있다. 마스터 브랜치는 하드 리셋되어 원격 HEAD 커밋에있다. 자, 두 가지를 어떻게 병합 할 수 있습니까? – Stefano
@Stefano 업데이트 됨. 그게 네가 가고 싶은 곳으로 가면 알려줘. 그렇지 않다면 더 할 일이 많습니다. 정확히 내가 repo의 정확한 상태를 모르는 때를 말하는 것은 어렵습니다. 아, 위의'git log' 명령에서 중요한'--all' 플래그를 잊어 버렸습니다. 모든 역사를보기 위해 매우 중요합니다. –
내 질문에 저장소 기록을 추가했습니다. 나는 여전히 작동시키지 못한다. 원격 저장소의 변경 사항은 사라지고 병합되지 않는다. – Stefano