GitHub에서 다른 사람의 코드에 어떻게 기여합니까? [닫은]


231

GitHub 의 특정 프로젝트에 기여하고 싶습니다 . 내가해야 포크 를? 분기 ? 권장 사항과 방법은 무엇입니까?


61
또 다른 말도 안되는
stephen

4
Github의 Concrete5에 기여하는 방법에 대한 자세한 단계별 가이드를 작성했지만 프로세스는 모든 프로젝트에 적용될 수 있습니다. 확인하십시오 .
Joe Meyer

7
나는 이것이 어떻게 '건설적이지 않은'지 알지 못한다. 투표와 견해만으로도 사람들이 대답하고자하는 인기있는 질문이라는 증거를 제공합니다.
Ian


1
아마도 다수결로 충분한 투표를하면 이전에 닫은 질문을 다시 부활시켜 사람들이 스레드에 다시 기여하도록해야합니다.
피터 테오

답변:


180

이상적으로 당신 :

  1. 프로젝트를 포크
  2. 리포지토리에 대해 하나 이상의 주석 처리가되어 있고 깨끗한 커밋을 만듭니다. 둘 이상의 부품 또는 피쳐를 수정하는 경우 여기에 새 분기를 만들 수 있습니다.
  3. github의 웹 인터페이스에서 풀 요청 을 수행하십시오 .

새로운 기능 요청 인 경우 먼저 코딩을 시작하지 마십시오. 새로운 기능에 대해 논의하려면 이슈를 게시하십시오.

기능에 대해 잘 설명하고 +1 또는 프로젝트 소유자가 승인 한 경우 문제를 직접 할당 한 다음 위의 단계를 수행하십시오.

일부 프로젝트는 풀 요청 시스템을 사용하지 않습니다. 코드를 프로젝트로 다시 가져 오는 가장 좋은 방법은 작성자 또는 메일 목록을 확인하십시오.


4
GitHub의 분기풀 요청
Gabriel Grant

1
예, 요청을 당깁니다. 병합 요청은 끔찍한 용어입니다.
Yann Ramin

2
@MariusKavansky 그것은 다른 길입니다! 일단 당신이 무엇을해야할지 알게되면, 오직 당신 만이 기여합니다 :)
hashbrown

오픈 소스 프로젝트에 기여한 후 새로운 기능이라면 새로운 기능에 대해 논의하기 위해 문제를 여는 것이 더 좋습니다. 잘 설명 된 기능 또는 문제인 경우 문제를 직접 할당 한 다음 위의 단계를 수행해야합니다. 이것은 내 2 센트입니다.
wizztjh

@hashbrown, 그는 지금까지 요청 된 기능의 "목록"이 어디에 있는지 묻습니다. 이미 요청되어 +1 된 기능.
Pacerier

31

Yann의 답변에 추가하기 위해 프로젝트를 분기하면 원하는 분기 (새로운 프로젝트 또는 원래 프로젝트의 분기)에서 개발할 수 있습니다

기억해:


1
당신은 당신의 두 번째 점에 대한 자세한 내용이나 링크를 추가 할 수 있습니다 (지점을 리베이스) ?
JorgeArtware

1
@ JogArtArtware 나는 rebase를 보여주는 몇 가지 링크로 답변을 업데이트했습니다.
VonC

@VonC 나는 여기에 질문을하지만, 당신이 그것이 필요하다고 생각하면, 나는 그것에서 완전히 새로운 질문을 할 것입니다. 왜 '직접 이력'이 아닌 다른 병합 대신 리베이스합니까? 다시 말해, 다음은 일부 프로젝트에 기여할 때 수행하는 기능입니다 (특징 지점의 PR이 병합되어 지점을 개발 및 마스터 한 후). 개발과 git checkout master; git pull;동일 (기능 지점이 먼저 병합 된 지점) "pull vs pull --rebase"와 "merge vs rebase"를 읽은 후에는 단순한 역사입니다. 더 깊은 것이 있습니까?
linuxbandit

"기여"(이 페이지의 맥락)의 관점에서 @grasshopper, 당신은 항상 푸시하기 전에 업데이트 된 브랜치 위에 로컬 커밋을 리베이스하고 싶습니다. PR이 승인 된 질문과 관련하여 리베이스 대신 병합하여 기존 분기를 업데이트 할 수 있습니다.
VonC

(미안하지만 지금은 github을 반영하도록 사용자 이름을 변경했습니다)-@VonC 감사합니다. 리베이스에 대해 읽은 제안은 PR 전에 적용됩니다. 로컬 리포지토리 내에서 승인 및 병합 된 PR을 반영하기 위해 일반적인 관행 (병합 대신 리베이스)이 있습니까, 아니면 무엇을 할 수 있습니까? 그래도 다른 PR을 제출하면 어떻게됩니까?
linuxbandit


10

이 과정을 안내하는 훌륭한 Railscast 비디오가 여기 있습니다 . 또한 테스트, 서브 모듈 등을 사용하여 기여할 때 사용할 브랜치를 결정하는 방법을 보여주는 것과 같은 많은 유용한 팁이 있습니다.

이 스크린 캐스트는 주로 Rails 개발자를 대상으로하지만 대부분의 정보는 모든 오픈 소스 프로젝트에 기여할 수 있습니다.


4

Github에는 여러 가지 방법으로 프로젝트를 공동 작업 할 수 있습니다. 대부분의 프로젝트 사용 모델은 풀 요청 모델입니다. 사람들이 처음 GitHub 풀 요청을 할 수 있도록 프로젝트를 시작했습니다. 실습 자습서를 통해 첫 번째 PR만들 수 있습니다.

워크 플로우는 다음과 같이 간단합니다.

  • github에서 repo를 포크하십시오.
  • 리포지토리를 컴퓨터에 복제
  • 지점을 만들고 필요한 변경
  • GitHub에서 변경 사항을 포크로 푸시하십시오. git push origin branch-name
  • Compare and pull request버튼 을 보려면 GitHub의 포크로 이동하십시오
  • 그것을 클릭하고 필요한 세부 사항을 제공하십시오


2

기술 워크 플로우

다음과 같은 워크 플로를 제안합니다.

  1. 저장소 포크 (GitHub 웹 인터페이스를 통해 : "포크"버튼)
  2. 분기 저장소에서 URL을 복사하십시오.
  3. 복제 (명령 줄에서)

    git clone <url-from-your-workspace>

  4. 방금 만든 디렉토리를 입력하고 지점을 만듭니다.

    cd <directory> git checkout -b <branchname>

  5. 이제 변경하십시오

  6. 각 변경 후 하나 이상의 커밋을 만들 수 있습니다.

    commit -a

  7. 완료되면 변경 사항을 푸시하십시오.

    git push origin <branch>

  8. 명령 행 에 PR을 작성하기위한 URL표시 되어야합니다 . URL을 방문하여 버튼을 클릭하여 PR을 만드십시오.

  9. 그렇지 않은 경우 브라우저의 저장소를 방문하면 풀 요청을 작성하기위한 단추가 제공됩니다.

그게 다야.

따라서 기본적으로 저장소를 작업 공간으로 분기하고 새 분기를 작성하고 새 분기를 푸시했습니다.

나중에 동일한 복제 된 리포지토리에서 더 많은 PR을 만드는 경우 다른 PR에 대한 다른 분기를 만들기 전에 동기화해야합니다 (원래 저장소에서 최신 변경 사항 가져 오기).

git checkout master
git remote add upstream <url-of-original-repo>
git pull upstream master

다른 고려 사항 :

  • 프로젝트에 컨트 리뷰 션 가이드 라인이있을 수 있습니다. CONTRIBUTING.rst 또는 .md 파일을 찾으십시오.
  • 프로젝트의 코딩 지침을 따르고 싶을 수도 있습니다.
  • 아이디어를 이슈로 먼저 설명하고 싶을 수도 있습니다
  • 프로젝트의 풀 요청 탭을보고 열려있는 PR, 병합 된 PR이 있는지 확인하십시오.

이러한 제안은 통합되지 않는 PR에 작업을 수행하는 데 따르는 문제를 해결하기 위해 제공됩니다. 프로젝트에 활동이 있고 PR이 병합되면 이는 좋은 신호입니다. 컨트 리뷰 션 가이드 라인이있는 경우이를 따르십시오.

항상 정중하십시오. 프로젝트 관리자는 PR을 병합 할 의무가 없습니다. 프로젝트에 추가 할 가치가있는 것이 있습니까?


1
잘 자세한 프로세스 (내 9 살짜리 대답보다 더 정확). 공감.
VonC 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.