2010-05-07 2 views
13

나는 'master'가 어떤 방향으로 가고있는 repo를 가지고 있고, 두번째 branch 'foo'는 두 개의 커밋에 대해 분기 될 것이고, 그 다음에는 'master'에 대한 모든 후속 변경을 추적 할 것이다. 물론 선택의 여지가 있습니다.Subversion은 병합을 위해서만 --record-only를 사용합니다. Git에서 어떻게합니까?

Subversion에서 실제 변경 사항이 커밋되지 않았더라도 "병합이 발생했습니다"라고 표시하기 위해 --record-only 병합을 수행 할 수 있습니다. 즉, 대상 분기의 디렉토리에 연결된 속성의 병합 추적 번호가 변경됩니다.

내가

자식 마스터에게 --no 커밋 병합과 함께 플레이 ... 있었다

내가 커밋하기 전에 어설프게 할 수 있습니다 어떤 것으로

..하지만 그것은 문제의 변경 부분에 대해 대상 분기의 엉망진창을 만들고 있습니다 (삭제 후 이름 바꾸기).

더 쉬운 방법이 있어야합니다 ..?

답변

12

이 당신이 찾고있는 무엇인가?

우리

git merge --strategy=ours master 

이것은 헤드의 수를 해결하지만, 병합의 결과 트리 효과적으로 다른 모든 지점에서 모든 변경 사항을 무시하고, 항상 현재 브랜치 헤드의입니다. 그것은 사이드 브랜치의 오래된 개발 이력을 대체하기 위해 사용됩니다.

이것은 사용자가 요구하는 것 같습니다. 실제로 변경 사항을 도입하지 않는 병합 커밋을 만듭니다.

하지만 정말로 이것을하고 싶습니까? 분기를 실제로 병합하지 않고 (병합하지 않고) 나중에 병합 할 수없는 이유가 있습니까?

+2

P. 지난 주에'--strategy = ours'를 언급 한 것은 이번이 세 번째 맹세입니다. 왜 모두가 갑자기 역사를 버릴 필요가 있는지 궁금합니다. – Cascabel

+0

분기 지점 바로 뒤에있는 지점에서 데이터베이스 설정 파일을 변경하려고합니다.이 지점을 마스터에 병합하고 싶지 않습니다. 나중에 지점에서 버그 수정, 나는 다시 마스터로 병합하고 싶습니다. 이렇게하면 수정 프로그램을 체리 따기하지 않고 개별적으로 커밋 할 수 있습니다. –

+0

위와 같은 작업을 수행하는 동안,이 데이터베이스 정보는 실제로 12 인자 응용 프로그램 에서처럼 환경 변수에 속합니다. –

0

Paul, git이 (svn과 관련하여) 쉽게 이름 바꾸기와 delete를 처리합니다. 그것은 파일 이름이 아닌 내용을 추적합니다. svn에서 이것은 고통 스러울 것이며, 이것을 할 때 git로 어떤 문제가 발생합니까?

0

제프롬미가 찍었습니다. 실제는 다음과 같습니다 - http://github.com/jbehave/jbehave-core/blob/master/examples/trader/src/main/java/org/jbehave/examples/trader/TraderStory.java (스위치 브랜치로 재생하고 65 행을보십시오).

이것은 '역사를 버리는'것에 그다지 중요하지는 않지만, Git을 사용하여 단일베이스에서 다양한 변경 사항을 저글링하는 방법에 대해 자세히 설명합니다. 사람들이 JBehave (IMO)를 채택하게하려면 예제를 따르기가 정말 쉽습니다. 이 'Trader'예제에는 JBehave vanilla + Guice 변형 + SpringFramework 변형 + PicoContainer 변형이 모두 동일한 소스 디렉토리에있었습니다. 이제 4 개의 지점이 'Trader'예제의 가장 표준적인 표현을 설명 할 수 있습니다.

+0

죄송하지만 링크가 깨졌습니다. –

관련 문제