2012-07-09 2 views
1

master와 customer private 브랜치에 공통 파일 "foobar"가 있습니다. 이전에 그들은 갈라져서 이제는 마스터의 모든 사설 브랜치에 사과 한 개의 파일을 가져 왔습니다. 내 고객 가지 마스터를 추적하기 위해서는master 브랜치에서 rebase 브랜치에 대한 파일을 만들기

, 나는 성공적으로 git rebase -i master을 사용했습니다.

그러나, 지금 강제로 내 사설에서 git checkout master -- foobar "동기화"했습니다, 그것을 최선을 다하고 지금 내 자식 rebases 밖으로 erroring된다. 매번 손으로 고정하는 것은 너무 오래 걸립니다.

git checkout master -- foobar && git add foobar && git rebase --continue 

누군가이 팁을 제공 할 수 있습니까? 사설 지부에서 커밋을 되 돌리는 것은 문제가되지 않습니다. 기본적으로 나는 모든 브랜치가 master, end of의 foobar 파일을 사용하기를 원한다.

+0

나머지 'master'도 사용할 수 있습니까, 아니면 하나만 사용할 수 있습니까? – Christopher

+0

이 경우 하나의 파일. 사설 지사는 많은 파일에서 차이가납니다. 필자는 본질적으로 권한이 있기 때문에 마스터에 대해 리베이스하지만 구성 파일 등은 다릅니다. – hendry

+0

여기에는 다양한 해결책이 있지만 어느 것도 더 쉽거나 덜러워 보이지 않습니다. http://stackoverflow.com/questions/449541/how-do-you-merge-selective-files-with-git-merge. – Christopher

답변

0

를 사용하여 사용자 정의는 속성을 통해 드라이버를 병합 :

git checkout master 
echo foobar merge=checkoutMaster > dir/to/foobar/.gitattributes 
git add dir/to/foobar/.gitattributes 
git commit -m "Always use master version of foobar" 
git config merge.checkoutMaster.name "Use master version of foobar" 
git config merge.checkoutMaster.driver "~/checkoutMasterFoobar.sh %O %A %B" 
echo "git checkout master -- dir/to/foobar/foobar && exit 0" > ~/checkoutMasterFoobar.sh 
+0

왜 드라이버입니까? 왜 이렇게 복잡한가요? 나는 일단 예전처럼 ... 내 재베이스가 일하기를 바란다. – hendry

+0

문제는 하나의 파일을 다른 모든 파일과 다르게 취급하기를 원합니다. 여기에서 일하기를 원하는 것은 매우 구체적인 것입니다. 나는 보통 그런 설정 파일을 추적하지 않거나 의도적으로 잘못된 항목을 만들고 검색을 대체하기 전에 스크립트를 대체해야합니다. –

+0

알았어, 내 말은 내 질문을 다시 한번 말하지만, 이번에는 "일회성"동기화 만하고 내 리베이스는 폭탄을 쓰지 않기를 원한다. – hendry

0

나는 내가으로 업데이트 한 후 마스터에서 변경을 체크 아웃 한 이에 해결책을 찾은 것 같아요. 당신이 역을 할 때

나쁜 일이 일어난다. 나는. 마스터에서 파일을 체크 아웃 한 다음 리베이스하십시오.