비슷한 문제가 있었고 대상 파일 구성과 일치하도록 작업을 조정하여 문제를 해결했습니다.
수정 한 것을 말한다 original.txt지사 (온 local지점),하지만 마스터 분기에, original.txt또 다른 하나에 복사 된 말 copy.txt. 이 사본은 commit이라는 커밋에서 수행되었습니다 CP.
에 수행 된 모든 로컬 변경 사항, 커밋 A및 B아래 original.txt를 새 파일 에 적용하려고 합니다 copy.txt.
---- X -----CP------ (master)
\
\--A---B--- (local)
move을 사용하여 변경 시작 지점에 버리기 지점 을 만듭니다 git branch move X. 즉, 병합하려는 커밋 이전의 move분기를 commit에 두십시오 X. 아마도 이것은 변경 사항을 구현하기 위해 분기 한 커밋입니다. @digory doo 사용자 가 아래에 쓴 것처럼 git merge-base master local을 찾을 수 X있습니다.
---- X (move)-----CP----- (master)
\
\--A---B--- (local)
이 분기에서 다음 이름 변경 명령을 실행하십시오.
git mv original.txt copy.txt
파일 이름이 바뀝니다. 참고 copy.txt아직이 시점에서 트리에 존재하지 않았다.
변경 사항을 커밋하십시오 (이 커밋 이름을 지정합니다 MV).
/--MV (move)
/
---- X -----CP----- (master)
\
\--A---B--- (local)
이제 다음 작업을 기반으로 작업을 리베이스 할 수 있습니다 move.
git rebase move local
문제없이 작동하며 변경 사항이 copy.txt로컬 지점에 적용됩니다 .
/--MV (move)---A'---B'--- (local)
/
---- X -----CP----- (master)
MV이동 조작 CP으로 인해 메인 브랜치 에서 커밋 할 때 복사 조작과 충돌이 발생할 수 있으므로 이제는 메인 브랜치 히스토리에서 커밋을 원하지 않거나 가질 필요가 없습니다 .
다음과 같이 이동 작업을 삭제하고 작업을 다시베이스로 변경하면됩니다.
git rebase move local --onto CP
... 다른 지점에서 도입 된 CP커밋은 어디에 있습니까 copy.txt? 이것은 커밋 copy.txt상단의 모든 변경 사항을 리베이스합니다 CP. 이제 local브랜치는 항상 수정 copy.txt하고 아닌 것처럼 정확하게 original.txt유지되며 다른 사람과 계속 병합 할 수 있습니다.
/--A''---B''-- (local)
/
-----X-------CP----- (master)
변경 사항이 적용 CP되거나 copy.txt존재하지 않고 변경 사항이 다시 적용되는 것이 중요합니다 original.txt.
이것이 분명하기를 바랍니다. 이 답변은 늦었지만 다른 사람에게는 유용 할 수 있습니다.