2012-01-10 6 views
1

우리의 master 브랜치에 포함 된 코드의 최신 안정 버전이 인 git 워크 플로우가 있습니다. 계속 개발 및 버그 수정은 별도의 분기에서 으로 처리되고 이 마스터로 병합되기 전에 테스트를 위해 준비 분기로 병합됩니다. 스테이징 브랜치에 버그 픽스를 병합하기 전에 개발자는 스테이징 브랜치를 버그 픽처 분기 에 병합하여 마스터에서 분기 한 이후 변경 사항을 테스트해야합니다. 모두 정상적으로 작동하면 bugfix 분기가 준비 분기로 병합됩니다. 우리 프로세스에서는 버그 수정 결과로 변경된 모든 파일 목록을 으로 제공해야한다고 지시합니다. 으로 개발자에게 부담을주지 않으려합니다. 을 마스터에서 분기 한 다음 을 스테이징으로 병합하기 전에 목록을 생성 할 때 해당 지점에 태그를 지정하도록 강요하여 이러한 추가 작업을 수행해야합니다. 그럼, 스테이징 브랜치에 병합 된 후 아래의 bugfix 브랜치 에서 변경된 파일을 확인하는 가장 좋은 방법은 무엇입니까? 기본적으로 commit (1)로 시작하여 변경된 파일을 원하지만 은 분기 지점을 버그 수정 분기로 병합 한 결과로 변경된 파일이 아닙니다. 에 대해 어떻게git : 브랜치에서 변경된 파일을 확인하십시오.

master (A)---(B)-----------------------(G) 
       \      /
staging   \ (C)---(D)-----(E)-(F) 
       \     \/
bugfix   (1)---(2)---(3)---(4) 
+0

가능한 중복 힘내에서 지점에] (http://stackoverflow.com/questions/8746636/how-can-i-view-all-files-changed-on-a-branch-in-git) –

답변

2

당신이 병합 악 아무 짓도 안 했어요 가정 위탁 (4) 및 (F), 당신이 필요로하는 모든입니다 : 당신은 정말 멋진 싶은 경우

git diff --name-only commit-B commit-3 

, 당신은이 작업을 수행 할 수 있습니다 :

git diff --name-only $(git merge-base bugfix~1 master) bugfix~1 

git merge-base 두 이름 커밋 가장 최근의 공통 조상을 발견하고는, bugfix 전에 커밋에 bugfix~1는 의미 즉, 커밋 (3). 어떤 이유로 준비 지점이 여러 번 합병 된 경우

, 당신은 몇 등의 차이점을해야하고 노조를 취할 것 예 :

(git diff --name-only B 3; git diff --name-only 5 13) | sort -u 
[I 모든 파일을 볼 수있는 방법 변경의
+1

분명히 일반적인 워크 플로이므로 개발자는 분기를 만들 때 분기 지점에 태그를 지정하여 작업을 약간 더 쉽게 만들 수 있습니다. 그래서 나중에 그들은'git diff --name-only-bugfix_start bugfix ~ 1'를 예로들 수 있습니다. – wadesworld

+0

* tags *를 사용하는 경우 우연히 전파되지 않도록주의하십시오. 특히,'git pull'은 기본적으로 태그를 가져옵니다. 따라서 개발자들이 서로 직접 잡아 당기면, 리포지토리에 많은 임시 태그가있는 사람들이 빨리 끝낼 수 있습니다. (태그 대신 태그를 사용하는 것이 좋기 때문에 브랜치를 대신 사용합니다.) – Cascabel

+0

호기심에서 다른 브랜치의 시작을 표시하는 것 외에 다른 목적으로 브랜치를지지합니까?브랜치의 시작점을 찾는 것은 어려운 일이 아니기 때문에 태그를 제안했습니다. 조금 애매하게 여길 수 있습니다. 그래서 당신이 말하는거야 :'git checkout -b bugfix; 자식 체크 아웃 -b bugfix_start'? 아마 나는 오해하고있다. 모든 개발자가보다 간단한 방법으로 bugfix 브랜치의 시작점을 알아야 할 필요가 있다면, 브랜치 나 태그를 전파하는 것의 차이점이 있습니까? – wadesworld

0

:

git checkout bugfix 
git diff HEAD~1 master 

이 당신에게 버그 수정 사이의 DIFF를 제공해야 병합 및 마스터하기 전에 커밋합니다.

+0

세 가지 문제 : 필요가 없습니다 체크 아웃하고,'HEAD ~ 1'이 아니라'bugfix ~ 1'을 사용하십시오; 버그 수정과 관련이없는 다른 변경 사항을 선택했기 때문에 마스터와 비교하고 싶지는 않습니다. OP가 원하는 파일 목록이 아니라 전체 diff를 인쇄합니다. – Cascabel

+0

주목할만한. 좋은 대답 - 투표했습니다. – wadesworld

관련 문제