2017-10-25 1 views
0

코드베이스는 다른 코드베이스에서 파일을 가져 와서 코드베이스에 맞게 수정합니다. 코드베이스의 역사를 공유 할 수는 없습니다. (그 질문과 관련이 없습니다.)트리가 아닌 파일을 3 방향으로 병합 하시겠습니까?

가져온 파일을 3 방향 병합 할 수 있습니까?

  • 공통 조상은 소스 코드베이스의 이전에 가져온 버전입니다
  • 지점 1은 소스 코드베이스의 업데이트 버전입니다
  • 지점이 우리의 수정 된 버전입니다 : 어디.

외부 도구에 의존하지 않으려면이 병합을 수행하는 것이 바람직하지만 git는이 경우에는 존재하지 않는 공유 기록에 깊이 묶여 있습니다. 파일과 역사가없는 병합을하기 위해 git를 강요합니다.

답변

2

git merge-file (https://git-scm.com/docs/git-merge-file)을 사용하여 파일별로이 작업을 수행 할 수 있습니다. 많은 파일이 관련되어 있다면 매우 지루할 수 있습니다.

또는, 병합을 수행 할 임시 "통합 리포지토리"를 만들 수 있습니다.

mkdir merge-repo 
cd merge-repo 
git init 
# copy in the previous imported version of each file 
git add . 
git commit -m base 
git branch source 
# copy in the current version of each file with your changes (note you're still on master) 
git add . 
git commit -m ours 
git checkout source 
# copy in the current version of each file from the source repo 
git add . 
git commit -m theirs 
git checkout master 
git merge source 
# copy the merged files back to your repo 
cd .. 
rm -rf merge-repo #if you don't want to keep it around, you don't need it any more 

후자가 더 움직이는 부분이있을 수 있습니다,하지만 난 당신이 스크립트를들을 수 있었다 내기하고 개별 merge-file 명령을 무대에 파일로 파일을가는 것보다 훨씬 덜 지루한 수 있습니다.

+0

고마워요! git-merge-file에 대해서는 몰랐습니다. 이것은 실제로 스크립팅 된 프로세스의 일부입니다. 좋은 제안 :) –

관련 문제