내 풀 리퀘스트가 병합되었습니다. 다음은 무엇입니까? 수행했습니다. 원래 리포지토리를 포크하고 내

최근에 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에서 원본과 업스트림의 차이점은 무엇입니까 “참조 )

원본 리포지토리 ( “업스트림”)에 다시 제출하기 전에 작업이 해당 원본 리포지토리 의 최신 버전 을 기반으로하는지 확인해야합니다. upstreamrepo에 다시 ).
예를 들어 ” 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 워크 플로는 해결하는 모든 문제에 대해 새 브랜치를 만드는 것입니다. 이렇게하면 메인 라인 저장소의 관리자가 병합 할 솔루션과 거부 할 솔루션을 결정할 수 있습니다. 분기가 업스트림에 병합 된 후에는 분기가 더 이상 필요하지 않으며 일반적으로 삭제할 수 있습니다.