2011-02-28 2 views
4

GitHub에서 프로젝트를 포크하고 일부 변경 사항을 푸시하고 끌어 오기 요청을 열었습니다. 유지 보수자는 서명 오프와 새로운 변화 커밋 (보다는 내 커밋 병합) 적용, 그래서 그래프는이처럼 보였다 커밋 : 분명히잡아 당기기 요청이 체리를 가져 왔을 때 나는 무엇을해야합니까?

* 03a0687 (origin/master) frotz: Corrected MAN_PREFIX 
| * 11d3e98 (HEAD, master, jleedev/master) frotz: Corrected MAN_PREFIX 
|/ 
* 9c3dd1a yajl: use direct patch from Github. 

, 내 지역을 리베이스 또는 강제 업데이트하려면 중 하나가 분기. GitHub에서 포크를 강요해야합니까? 나는 힘 업데이트가 자동적이어서는 안되기 때문에 주로 묻는다. 메인테이너가 여러분의 변경 사항을 체킹했을 때 할 일은 표준적인 일입니까?

+0

또한 [StGIT 튜토리얼] (http://wiki.procode.org/cgi-bin/wiki.cgi/StGIT_Tutorial)에서이 내용을 읽었습니다. "관습에 따라 '마스터' '지점을 원격 프로젝트의 지점으로 설정하고 다른 사람의 작업을 반영하기 때문에 참조로만 사용하십시오. " –

답변

8

가장 간단한 방법은 항상 주제 분기에서 작업하는 것입니다. 그렇게하면 포크 마스터 브랜치는 항상 업스트림처럼 보이므로 업스트림에 변경 사항이 포함되면 항상 동일한 작업을 수행하고 토픽 브랜치는 삭제하면됩니다.

업스트림에서 변경 사항을 병합하는 경우 마스터와 토픽 분기 모두에 동일한 커밋이 포함되므로 안전하게 토픽 분기를 삭제할 수 있습니다. 업스트림에서 커밋을 선택하면 업스트림에 대한 변경 사항을 확인한 후 토픽 브랜치를 삭제하면됩니다.

다른 이점은 마스터에 대해 주제 분기를 쉽게 리베이스 할 수 있다는 것입니다. 때로는 수동 충돌 해결없이 업스트림에 패치를 적용 할 수없는 경우 코드를 재 작성하거나 병합하여 충돌 해결 작업을 수행 할 것을 요구할 것입니다. 또한 포크를 만든 후에 커밋했기 때문에 체리를 뽑아 버렸다고 생각합니다. 적은 양의 커밋 만 병합 커밋을 도입하고 싶지는 않습니다. 체리 피킹 (체리 피킹)을 통해 그들은 역사를 더욱 선형적이고 청결하게 유지했습니다. 리베이스를 자주했다면, 머지 않아 머지 않아 머지 않아 머물러야 할 것입니다.

지금 당장해야 할 일에 대해 로컬 지사를 강제 업데이트 한 다음 포크로 강제로 밀어 넣는 것이 유일한 옵션입니다.

+0

글쎄, 아마도 여러 명의 관리자가 있고 Signed-by-by 라인을 추가하기 때문에 항상 커밋을 선택하는 것이이 프로젝트의 정책 인 것 같습니다. 주제 분기 기능은 두 경우 모두 의미가 있습니다. –

관련 문제