2012-07-19 2 views
2

특정 분기를 다른 분기로 병합 할 때 문제가 발생합니다.GIT의 특정 분기와 관련된 변경 사항 만 병합 하시겠습니까?

우리는 우리의 프로젝트를 기반으로 총 3 개의 지점을 운영하고 있습니다. DEV, SUP, 마스터. 개발자는 DEV의 분기를 기반으로하고 고객이 테스트 할 수 있도록 DEVICE에서 티켓을 기준선으로 병합합니다. 이 시점에서 로컬 브랜치를 DEV에 기반하기 때문에 추가 변경이 없습니다. 문제는 내가 예를 들어 DEV12345 분기를 SUP로 병합하려고 시도 할 때 DEV12345 분기 (커밋)에서 수행 된 변경 사항과 관련없는 많은 변경 사항을 보여줍니다.

체리 피킹 및 기타 솔루션에 대해 읽었지 만 GIT를 사용하기 시작 했으므로 내가 본 응답 중 일부를 수행 할만큼 충분히 경험하지 못했습니다.

저는 체리 피우고 싶지 않습니다. 마스터로 SUP를 병합 할 때 내 이해이기 때문에 커밋을 잃거나 병합 충돌이 더 많을 수 있습니까?

$ git merge DEV12345 --no-commit 
$ git status 

이 시점에서 나는 원하지 않는 변화를 보여줍니다. 나는 이것을 Stackoverflow의 다른 솔루션에서 얻었습니다.

$git add <fileNamePath> 
$git clean -f -d 
$git reset HEAD 

나는 이것이 내가 한 것이라고 생각한다. 나는 이것이 단지 내가 원했던 특정 변경 사항을 가져 왔음을 확인했다. 이것은 100 개의 파일 중 단 하나의 파일 만 다른 것이었다. 내가 잘못 아니라고한다면 나는 그것이 우리에게 유리한 아니라 내 자신의

$git commit -m "xxxxxxxxxxxx" 

내가 잃어버린 것 원저자의 커밋/역사를 한 이후 는 그리고 나는 믿는다.

더 쉬운 방법이 있나요? 그것은 또한 내가 결국 마스터에 게시 할 때 역사를 유지할 것입니다. 고객이 티켓을 승인 한 후 SUP에 게시합니다. 승인 된 모든 티켓을 SUP에 게시 한 후 SUP를 마스터에 병합합니다. 이는 라이브 시스템입니다.

누군가가 간단한 형태로 해결책을 제시 할 수 있으므로 시동기를 이해할 수 있습니까?

감사합니다.

답변

0

힘내 요령을 사용하면 커밋을 하나 이상으로 스쿼시 할 수 있습니다. 대화 형 git rebase 응용 프로그램을 기반으로합니다. 어쩌면 SUP로 병합 한 다음 커밋을 함께 스쿼시 할 수 있습니다. 따라서 SUP에 의미있는 병합을 수행하면서 커밋을 지사에 보관합니다.

git rebase에 대한 자세한 내용은 recipee 또는 git-book을 확인하십시오.

bye

관련 문제