2012-05-16 7 views
3

우리 프로젝트의 개발자 워크 플로우는 다음과 같습니다 : 우리는 태스크/버그 티켓을 만들고, 우리는 master를 분기하여 작업/버그에 대해 작업하고 결국 마스터로 병합합니다. 마스터에 대한 커밋이 멋진 메시지를 가지기를 바랍니다. 태스크 브랜치에서 커밋하는 사람들은 커밋 메시지가 좋지 않을 수도 있습니다.하지만 괜찮습니다.하지만 분기를 병합하려면 부정한 메시지가있는 커밋이 마스터가됩니다.git merge : - 스쿼시를 강제하는 방법이 있습니까?

이 문제를 해결하는 한 가지 방법은 항상 --squash를 사용하여 마스터에 병합하는 것입니다. 그렇게하면 좋은 커밋 메시지를 제공하고 모든 커밋 범위를 하나로 처리 할 수 ​​있습니다. 방법이 있다면 시행하면 그게 궁금하네요? 의미, 만약 우리가 자식 병합을 거부 할 수있는 합병 병합되지 않습니다 부숴?

+0

서버에 불량 분기가있는 경우 '수신 후'에서 불량 분기의 내용을 확인할 수 있습니다. –

+1

스쿼시는 '좋은'커밋 메시지를 어떻게 적용합니까? – Lee

+0

아니요, 그렇지만 깨끗한 메시지를 쓸 수있는 기회를 제공합니다. 내가 말했듯이, 기능/작업 브랜치에서 사람들은 원하는대로 중간 커밋을 수행 할 수 있지만 병합 할 때 좋은 메시지를 갖고 싶습니다. 정상적인 병합은 그렇게하지 않습니다. – EnToutCas

답변

0

분기에 rebase -i을 사용할 수 있습니다. 그러면 분기의 모든 커밋을 1 커밋으로 스쿼시 한 ​​다음 해당 분기 (커밋 1 개)를 마스터로 병합 할 수 있습니다.

+0

이미 서버에있는 경우 rebase가 도움이되지 않습니다. – EnToutCas

+0

실제로, master 브랜치가 feature 브랜치처럼 보이는 것보다 더 신경 써야 할 것 같습니다. 나에게 어떤 사용자 교육이 필요하다는 소리가 들린다. "서버에 푸시하기 전에 -i를 리베이스하고 멋진 커밋 메시지를 작성하십시오." :-) –

1

푸시되는 것이 무엇이 필요한지 확인하려면 서버 측 걸쇠가 필요합니다. 둘 이상의 비 병합 커밋을 도입하는 참조 변경을 거부합니다.

git config branch.master.mergeoptions "--squash" 

이 뜻 : 당신은 거기에 직접 강제 아니지만, 당신은 master 지점에 대한 기본 병합 옵션으로 --squash을 설정할 수

8

댓글이 티켓 번호 등이 포함되어 있는지보고와 같은 다른 검사를 할 수 항상 --squash 옵션을 지정하지 않고 마스터에 병합 된 커밋을 스쿼시합니다.

+0

좋은 팁입니다. 감사. – EnToutCas

+0

이 변경 사항을 어떻게 취소 하시겠습니까? –

+0

@KamranKhan 병합 지점을 적극적으로 삭제하지 않는 한, 여전히 귀하의 저장소에 있습니다. 병합 된 커밋을'git revert'로 되 돌린 다음 원하는대로 진행하십시오. – eckes