최근에 GitHub의 프로젝트에 참여했습니다. 다음을 수행했습니다.
원래 리포지토리를 포크하고 내 로컬 머신에 복제하고 기존 버그를 수정하기 위해 브랜치를 만들고 해당 브랜치에있는 버그를 수정하고 해당 브랜치를 내 리포지토리로 푸시하고 리포지토리 작성자에게 풀 요청을 보내 수정 브랜치를 병합 합니다. 마스터 브랜치.
처음으로 다른 사람의 코드를 작성했기 때문에 어떻게해야할지 모르겠습니다. 이제 내 풀 요청이 작성자에 의해 원래 저장소 / 프로젝트에 병합되었습니다.
다음에 무엇을해야합니까? 브랜치를 삭제해야하나요? 지점을 병합해야합니까? 다른 건 없나요?
추가 정보:
원래 프로젝트에는 단일 분기가 있습니다.
또한 원본 저장소에서 최신 업데이트를 얻을 수있는 업스트림 세트가 있습니다. (나는 이렇게했다) :
git remote add upstream https://path/to/original/repo.git
그리고 다음과 같은 업데이트를받습니다.
git fetch upstream
답변
다음으로 할 일은 새로운 기능을 제공하거나 자체 전용 브랜치에서 다른 버그를 수정하는 것입니다 (포크에만 푸시 됨).
포크는 그대로 있지만 포크 안의 가지들은왔다 갔다 할 수 있다는 뜻입니다.
더 이상 기여할 계획이없는 경우 포크를 제거 할 수도 있지만 ‘기고 한 저장소’에서 해당 항목이 제거됩니다 .
다음이 더 쉽습니다.
- 당신의 삭제
fix
(실제로, 지점 이 지금 당신을 위해 삭제를 포크에 () : 참조 “및 해당 지역의 복제의 repo에서 로컬 및 원격 힘내 분기를 삭제 “) git pull upstream master
(master
수정이 통합 된 분기 인 경우 : 병합은 빨리 감기가됩니다.) :이 시점에서 리베이스가 필요하지 않습니다.- 업데이트 된 로컬 위에 수정 브랜치를 다시 만듭니다
master
(이제에서 최신 버전으로upstream master
).
그러나 향후 풀 요청을 제출하기 전에 한 단계를 잊지 마십시오 .
먼저 fix
업스트림 대상 분기에서 현재 분기 ( )를 리베이스합니다.
( upstream
당신이 포크 한 원본 저장소 : ” github에서 원본과 업스트림의 차이점은 무엇입니까 “참조 )
원본 리포지토리 ( “업스트림”)에 다시 제출하기 전에 작업이 해당 원본 리포지토리 의 최신 버전 을 기반으로하는지 확인해야합니다. upstream
repo에 다시 ).
예를 들어 ” github의 공유 리포지토리에서 pull 요청을 관리하기위한 워크 플로 “를 참조하십시오 .
다시 말해서, upstream
당신이 바쁘게 물건을 고치는 동안 진화 할 수 있습니다 (새로운 커밋이 푸시됩니다). 커밋이 최신 버전과 호환되는지 확인하려면 업스트림에서 최신 작업을 기반으로 수정 사항을 재생해야합니다 upstream
.
OP 산토 쉬 쿠마 묻는 의견에 :
에서
upstream
마스터로 가져오고 병합했습니다 . 이제 어떻게됩니까?
최근 풀 요청 이후 새로운 수정 사항을 적용하지 않은 경우 위를 참조하십시오 ( fix
업데이트 된에서 새 분기 를 삭제하고 다시 생성 master
).
pull 요청 이후 더 많은 작업을 수행했다면 새로운 pull 요청 upstream
을 만들고 싶다면 병합하지 않을 것입니다. I would pull and rebase :
git pull --rebase upstream master
이렇게하면 내 모든 새 로컬 작업이 가장 최근 upstream
master
커밋 (로컬 리포지토리에서 가져옴) 위에 재생되어 master
향후 풀 요청을 통합 할 대상 브랜치라고 가정합니다 .
그런 다음 내 로컬 작업을 ‘ origin
‘로 푸시 할 수 있는데, 이는 GitHub의 포크입니다 upstream
.
그리고 GitHub의 포크에서 안전하게 풀 리퀘스트를 만들 수 있습니다 upstream
. 병합 해결없이 새 커밋 만 추가 할 것임을 알기 때문에 리포지토리에서 새 커밋을 병합 upstream
하면 간단한 빨리 감기 병합을 의미합니다.
git pull --rebase
(현재 체크 아웃 된) fix
브랜치 를 리베이스하려는 맨 위에 브랜치를 지정하지 않으면 A 가 작동하지 않습니다.
(
git pull --rebase
) 내용 :
You asked to pull from the remote '`upstream`', but did not specify a branch.
마침내 마스터를 추가해야합니까? 그리고 이것은 무엇을할까요?, 그것은 내
fix
브랜치를 삭제 합니까?
예, ‘ master
‘ 와 같이 pull 요청의 대상이 될 분기를 지정할 수 있습니다 . 브랜치를
삭제 fix
하지는 않지만 master
리포지토리에서 가져온 업스트림 위에서 재생됩니다 .
답변
첫째, Github의 프로젝트에 대한 첫 번째 기여를 축하합니다.
일반적인 Github 워크 플로는 해결하는 모든 문제에 대해 새 브랜치를 만드는 것입니다. 이렇게하면 메인 라인 저장소의 관리자가 병합 할 솔루션과 거부 할 솔루션을 결정할 수 있습니다. 분기가 업스트림에 병합 된 후에는 분기가 더 이상 필요하지 않으며 일반적으로 삭제할 수 있습니다.