2013-12-19 8 views
1

방금 ​​http://www.draconianoverlord.com/2013/09/07/no-cherry-picking.html을 읽고 체리 피킹에서 발생하는 단일 커밋 병합에 대한 정보를 svn:mergeinfo이 추적 할 수있는 것으로 보입니다.벚꽃 따기에 Subversion을 쓰고 자식 (또는 DAG VCS)을 더 잘 사용합니까?

feature-branch를 cherry-picked 버그 수정과 원래 분기 (이전에 버그 수정을 한 곳)에 병합 할 때 병합 충돌을 피할 수 있습니다.

여기에 재미 ASCII 아트 (이 SO에서 같은 사람) : 여기

 o--o--o--o--o feature 
    ^ ^ \ 
    / /  v 
-o--o--o--X--o---o---Y--o--> dev 

X - (우리가 dev에서 feature 지점으로 이동 필수/차단 수정) 단지 하나의 변경 집합.

수정 X에 의해 영향을받은 행을 변경 한 경우 Git이 (가) Y 병합에 충돌이 발생했습니다. SVN은 merge에서 해당 변경 집합을 건너 뜁니다. bisect를 사용하고 수정 전파 양분과 지점에서 공통 조상을 аштв하는 DAG VCS 사용자를 유도

UPDATE. 그래서 당신은 깨끗한 역사를 만들 수 있습니다.

답변

2

read up on rerere, "재사용 기록 된 해상도"로 짧을 수도 있습니다. 힘내는 과거의 갈등을 어떻게 해결했는지 기억하고 나중에 그 해결책을 다시 사용할 수 있지만이 기능을 활성화해야합니다.

git config rerere.enabled true은 리포지토리에서이 기능을 사용합니다 (또는이 사용자에 대해이 컴퓨터에서 기본적으로 사용하도록 설정하려면 --global을 사용합니다).

+1

나는 병합 해상도에서 실수를하는 것처럼'rerere'을 싫어하지만, 내가 원하는 것을 알고 있다고 생각하기 때문에 제대로하기가 어렵습니다. – cforbish

+1

'rerere forget [path]'와'rerere clear'를 사용하여 필요할 때 캐시 된 해상도를 해결할 수 있습니다. – Chris

+0

@Chris 와우! 새로운 것을 알고 싶습니다. +1 – gavenkoa