저는 꽤 오랫동안 GitHub를 사용해 왔으며 일반적으로 기능 브랜치를 푸시 한 다음 제가 병합 한 Pull Request를 시작했습니다. 내가 브랜치를 병합 한 위치를 추적하는 데 도움이된다는 것을 알았습니다.
하지만 최근에는 Git의 작동 방식에 대해 점점 더 많이 읽었고 병합 커밋을 사용하여 병합 할 때 참조 할 수 있다는 것을 깨달았습니다. 브랜치.
그래서 기능 브랜치를 마스터로 병합 할 때 어떻게해야합니까?
마스터에서 병합 커밋을 수행 한 다음 업스트림으로 푸시합니다. 또는 로컬 브랜치를 푸시하고 Pull Request를 시작 하시겠습니까?
2 인 팀을위한 Pull Requests 소개-내 요청을 병합 하시겠습니까? 및 프로젝트에서 두 사람의 작업 흐름 및 공식 저장소 또는 포크의 브랜치에서 pull 요청을 열어야합니까? 그러나 그들 중 어느 것도 내가 찾고있는 것에 대한 대답이없는 것 같습니다.
댓글
- 그 대답에서 부족하다고 느끼는 것이 정확히 무엇입니까?
- 첫 번째는 풀 리퀘스트가 피어 리뷰를 의미한다는 의미에서 이야기합니다. 두 번째는 워크 플로우를 제공합니다. 세 번째는 ' 관련이 없습니다.
- 모범 사례 또는 유지 관리 방법에서보고 있습니다. 좋은 git 히스토리 관점.
- PR을 병합 할 때 지점을 로컬로 병합하여 수행합니다. 이를 통해 병합이 제대로 적용되는지 확인하고 결과를 게시하기 전에 테스트를 다시 실행할 수 있습니다. GitHub '의 Pull Request는이 워크 플로의 형식 화일 뿐이며 Git 자체에는 PR 개념이 없습니다.
- PR이 병합되면 병합이 생성됩니다. 마스터에 커밋하므로 ' 이것이 git 기록에 어떤 차이도 만들지 않는다고 생각합니다. 따라서 ' 명령 줄과 Github UI 사이에 개인적 선호도를 제외하고는 둘 중 하나를 사용할 이유가 없다고 생각합니다.
답변
git-merge 메커니즘 :
마스터에서 git merge feature
를 사용하면 feature
분기가 master
및 git 히스토리에 merge-commit
(분기를 빨리 감을 수없는 경우)를 생성합니다. merge-commit
를 강제로 만들려면 merge
와 함께 --no-ff
옵션을 사용하세요.
Merge Pull Request 메커니즘 :
GitHub에서 Pull Request를 시작하면 GitHub Issue
여기서 사람들이 PR을 병합하기 전에 커밋에 대해 이야기하고 토론 할 수 있습니다. PR이 GitHub에 병합되면 git merge feature
와 똑같은 작업을 수행합니다.
어떻게해야합니까? ?
따라서 역사에 관한 한이 둘 사이에는 차이가 없습니다.
그리고 기여하는 한 기여자는 두 상황에 대해 다른 작업을 수행합니다. 그들은 동일합니다 (멋진 작은 채팅 제외).
모범 사례 :
모범 사례를 찾을 수 없었지만 저장소에 기여자가 한 명 뿐인 경우 PR은별로 도움이되지 않는다고합니다.
@lxrec와 @amon이이 결론에 도달하는 데 도움이되었습니다.
댓글
- 팁 :
git merge
는 “빨리 감기”를 수행 할 수있는 경우 병합 커밋을 기록하지 않을 수 있습니다. 병합 커밋을 강제하려면--no-ff
옵션을 추가 할 수 있습니다. - 나는 githuib.com에서하는 것보다 로컬에서 git-merge를하는 것을 선호합니다. github.com과 같은 모든 작업을 수행해야합니다. 마스터 브랜치에서 직접 수행하는 것을 선호하지 않습니다. 프로덕션 용으로 사용하기 전에 먼저 스테이징 모드에서 설정할 수있는 비 마스터 브랜치를 사용합니다.
답변
Ashhar 가 말했듯이 기술적으로나 역사상 차이가 없습니다. 소규모 팀 PR을 생성하는 추가 단계 대신 직접 병합하는 것을 선호합니다. 그러나 기능에 검토 / 피드백이 필요하거나 “WIP이고 여러 사람이 작업 할 때 PR을 열고 추가하는 경향이 있습니다. PR의 설명에 대한 작업 목록입니다.
마스터에 대한 변경 사항이없는 경우 git merge
에서 빨리 감기를 사용할 수 있으므로 사용하는 것이 좋습니다. git merge --no-ff
. 그렇지 않습니다.
요약하면 PR 만 사용합니다. 토론이 필요할 때 s. 그렇지 않으면 직접 병합하십시오.
댓글
- 그것 ' 또한 pull 요청에 대한 토론과 피드백이 자동화 된 소스와 팀원이 제공합니다. CI 서버를 설정 한 경우 빌드 및 테스트 결과를 제공 할 수 있으므로 마스터에서 빌드를 중단하는 항목을 병합하지 않습니다.