2013-01-09 5 views
10

동일한 프로젝트의 두 가지 브랜치가 있고 첫 번째 브랜치의 한 부분이 다른 브랜치에 비해 극적으로 리팩토링 된 상황을 상상해보십시오. 하지만 잠시 동안 두 가지 기능을 모두 유지해야하기 때문에 버그 수정과 중요한 기능 추가를 두 가지 방법으로 수행하는 경우가 있습니다. 대칭 방식이 아닌 경우가 있습니다. 그리고 어떤 시점에서 리팩토링 된 브랜치를 원래의 브랜치와 병합해야하는 순간이 있습니다. 이런 상황에서 사용할 수있는 가장 좋은 기법은 무엇입니까? 역사를 깨끗하게 유지할 수 있습니까?힘내 : 올바르게 기능하는 2 개의 분기를 올바르게 병합하는 방법은 무엇입니까?

그러나 더 중요한 것은 그러한 시나리오에서 내 초기 전략이 무엇이었을 까?

답변

8

, 당신은 단순히 완전히 master 분기를 제거하거나의 말을 수 있도록 이름을 바꿀 수 있습니다 - legacy, 다음 다른 분기를 취하고 master로 이름을 바꿉니다. 그게 전부 야.

git branch -m master legacy    # rename local master to legacy 
git checkout legacy 
git branch -m another_branch master  # another_branch will be our new master 

로컬로 우리가 지금 완료 : 다음은 로컬 및 GitHub의에 목표를 달성하기 위해 실행해야 할 수도 있습니다 실제 명령입니다. 그러나 단순히 GitHub에서 master 브랜치를 삭제할 수는 없습니다. 먼저 다른 브랜치를 기본값으로 가져와야합니다. 이 작업은 저장소 Settings > Default Branch에서 수행 할 수 있습니다. 이 작업을 수행하면 진행할 수 :

git push origin :master     # remove master on GitHub 
git push origin master     # push out our new master branch 
git push origin legacy     # push our legacy branch too 

다시 Settings > Default Branch에 가서 master 다시 기본 분기를 전환합니다. 또한 마이그레이션 프로세스 중에 생성 한 추가 분기를 모두 제거 할 수 있습니다.

또는 기록에서 내 작업을 모두 저장하려는 경우 올바른 대답 here을 확인하십시오.

+1

그리고 어떻게'유산 '을 제거합니까? –

+1

요점은 레거시를 유지하는 것이 었습니다. 레거시가 필요하지 않은 경우 다른 브랜치와 마찬가지로 삭제할 수 있습니다. http://stackoverflow.com/questions/2003505/how-do-i-delete-a-git-branch-both-locally-and- in-github – jayarjo

+0

환상적입니다, 감사합니다. – Dogweather

2

브랜치가 2 개이기 때문에 하나는 다른 리팩토리토리와 상당히 다르게 리팩토링되며 둘 다 유지됩니다 ... 저는 힘내는 당신을 마술처럼 도와주지 않을 것입니다. 도움을 받으려면 지점 1에 적용되는 패치/변경 사항이 지점 2와 비슷해야합니다 (정확히 동일하지는 않음).

리팩토링되었으므로 새 코드가 두 분기에서 동일하게 모듈화되지 않은 한 코드가 서로 다를 수 있습니다.

처음부터 무엇을 했어야합니까?

  • 새로운 변화가 시험
  • 그런 다음 변경 작업을 확인할 수를 추가하기위한 곳 중 2 번째 지점
  • 에서 동일한 통합 테스트를 실행 초기 지점에 일부 단위 테스트 및/또는 통합 테스트 코드를 추가 두 가지
  • 에 대한

업데이트 : 두 가지의 변경 관리를 위해 , 당신은 아마 같은 과정이 필요합니다 - 지점-R에 주로 작업 완료된대로 모든 "스토리"또는 작업 항목을 브랜치 레거시에 병합하십시오.

두 번째 단계는 코드가 분기간에 너무 다른 경우 많은 작업이 될 것이라고 생각합니다. 두 브랜치를 모두 유지해야하는 경우 두 브랜치에서 사용할 수있는 라이브러리에 새 코드를 캡슐화하십시오. 그러면 한 지점에서 다른 지점으로 병합됩니다. 작업은 단순히 대신 master의 또 다른 분기를 사용하는 것이었기 때문에

+2

단위 테스트가 있습니다. 그건 내 관심사가 아니야.단지 더 깨끗한 자식 역사를 얻는 더 좋은 전략이 있는지 알고 싶었습니다. – jayarjo