업스트림 리포지토리에 동시에 기여하고 전환하기위한 적절한 에티켓과 권장 GitHub 워크 플로는 무엇입니까?


21

나는 일반적으로 GitHub와 VCS를 처음 사용합니다. 나는 여러 해 동안 여러 언어로 프로그래밍을 해왔지만 항상 커스텀 프로젝트 (공개 릴리스는 아님)에 솔로로 일했습니다. 나는 최근에 작업중 인 프로젝트에서 GitHub에서 다운로드 한 jQuery UI 위젯을 사용하기 시작했습니다. 리포지는 더 이상 원저자가 유지 관리하지 않습니다. 다른 포크는 원래 풀 요청 중 일부를 통합했습니다. 이것은 내가 포크 한 것입니다.

나는 몇 가지 버그를 발견하고 그에 대한 수정 사항을 생각해 냈습니다. 이 수정 프로그램에 기여하고 싶지만 기존 기능 중 일부를 손상시킬 수있는 다른 많은 변경 사항도 있습니다. 또한 다른 포크의 아이디어를 통합하고 싶습니다.

나는 여전히 GIT과 GitHub를 배우고 있으며 모든 것을 다루는 가장 좋은 방법을 찾으려고 노력하고 있습니다. 워크 플로, 병합, 풀 요청, 체리 피킹, 리베이스, 브랜칭 등 다양한 개념 / 작업에 대해 많은 독서 (여기서 SO, GitHub 도움말 페이지, Pro Git)를 수행했습니다. 내 회색 물질은 수영과 나는 시작해야 하고 내가 더 잘 내가 읽은 것을 이해 할 수 있습니다.

주된 이슈:

  1. 나는 한 번에 하나의 풀 요청 만 가질 수 있다고 읽은 것 같습니다. 즉, 각 버그마다 별도의 분기가 있고 각 버그에 대해 별도의 풀 요청이 필요합니까?

  2. 공백 문제를 정리하고 싶지만 별도의 커밋 에서이 작업을 수행하는 것이 가장 좋습니다. 마스터 또는 별도의 지점에서이 작업을 수행해야합니까? 너무 사소한 것에 대해 풀 요청을하고 싶지 않지만 분기 전에 공백을 변경하면 버그 수정에 대한 풀 요청에 영향을 미칩니 까? 일부 포크는 공백을 정리하여 효과적으로 diff를 쓸모 없게 만들었습니다.

  3. 버그를 이미 수정했지만 버그를 문서화하는 방법으로 포크에 대한 문제를 만들려고 생각했습니다. 좋은 생각입니까? 이슈, 커밋 및 병합을 마스터에 연결하려면 어떻게해야합니까? 풀 요청 업스트림을 수행하는 경우 문제가 업스트림으로 표시되거나 해당 문서 링크가 손실됩니까? 업스트림 리포지토리에 대한 문제를 열 ​​수 없습니다 (문제 탭이 없음).

  4. 내가 사용하려는 그의 아이디어에 대해 다른 포크 작성자에게 신용을주는 가장 좋은 방법은 무엇입니까? 그의 변경 사항이 이전 버전의 업스트림에 적용되고 다른 변경 사항과 호환되지 않기 때문에 그의 코드를 정확하게 사용할 수 없습니다. 그러나 아이디어를 사용하고 신용이 필요한 곳에서 신용을주고 싶습니다. 커밋 메시지에서 자신의 저장소 (또는 프로파일 또는 특정 커밋)에 연결해야합니까?

  5. 기본 파일 맨 위에있는 readme 파일과 DocBlock을 변경하는 것과 관련된 에티켓은 무엇입니까? 변경, 내 이름 추가, 내 리포지토리 및 데모에 대한 링크 추가, 원본 데모에 대한 링크 제거 (포크가 원본과 호환되지 않기 때문에)가 괜찮습니까? 물론 저자의 원본 이름과 라이센스 정보는 그대로 두겠습니다. 레코드의 경우 MIT 라이센스에 따라 라이센스가 부여됩니다.

VCS를 사용한 적이없는 솔로 개발자로서 나는 역사다시 쓰는 것에 익숙합니다 . 나는 완벽 주의자이며 깔끔하고 깔끔한 것들을 좋아합니다. 기록 된 역사에 대한 아이디어는 저를 조금 불안하게 만들고 처음부터 제대로하고 싶습니다 . 나는 놀거나 배우는 새로운 저장소를 만들었지 만 jQuery UI 위젯을 수정하여 프로젝트를 진행할 수 있기를 간절히 바란다.

답변:


15
  1. 올바른 요청은 풀 리포지토리가 리포지토리의 분기에 연결되어 있습니다. 지점을 수정하면 풀 요청으로 제출 한 내용도 수정됩니다.

    따라서, 버그 수정마다 분기 (및 풀 요청)를 작성해야합니다. 하나부터 시작하여 나머지는 계속하기 전에 관리자가 해당 관리자에게 어떻게 반응하는지 확인하는 것이 좋습니다. 오픈 소스는 본질적으로 사회적 과정입니다.

  2. 할 일이 당신의 공백 변경을위한 풀 요청을! 때때로 관리자 인 사람이라고 말하면, 나는 이러한 유형의 풀 요청을 좋아합니다. 나는 그것들을 승인하거나 승인하지 않으며 처리하는데 약간의 시간이 걸립니다.

    또한 관리자가 공백 변경에 동의하지 않는다는 것입니다! 그러니 조심하세요

  3. 흠 .. 당신이 여기서 이루고자하는 것이 확실하지 않다. 과잉 문서화처럼 들리지만 아이디어가 좋지는 않습니다. 아마도 왜 이것을하고 싶을지를 분명히 할 수 있습니까?

  4. 커밋 메시지 (또는 코드의 주석)에서 자신의 저장소에 연결하는 것은 크레딧을주는 좋은 방법입니다. 메이크업 당신이 그의 그를 감사하는 것을 명시 적 -하지만 조심 아이디어하지 자신의 코드. 코드를 복사 한 경우 코드에 어떤 라이센스를 사용하고 있는지 명확하지 않은 경우 해당 코드를 이메일로 보내드립니다. 라이센스는 분명하다 (그리고 그것은 만약 다른 당신이 (가)에 커밋 제출하고 저장소에서 라이센스) 당신이 당신의 풀 요청 메시지에서이 언급 또한 풀 요청에 다른 라이센스를 추가해야합니다.

  5. 이것은 정말 좋은 질문이며 대화 상대에 따라 다릅니다. 내 의견은 당신이하는 커밋이나 코드에 절대로 이름을 추가해서는 안된다는 것입니다. 주된 이유는 "코드에 대한 소유권과 책임"을 암시하기 때문입니다. "귀하의 것이기 때문에"다른 사람들이 코드를 수정하지 못하게 할 수 있습니다. 그러나 지금 우리는 오픈 소스의 본질에 대해 큰 토론을하고 있습니다. 여기서 멈추고 말할 것입니다. 프로젝트 관리자에게 물어 보거나 그냥하고 그의 반응을 확인하십시오.

  6. GIT로 (아직 공개되지 않은) 히스토리를 다시 쓸 수 있습니다! git rebase 명령을 배우십시오-이것이 git을 좋아하는 주된 이유 중 하나입니다. 다시 작성된 커밋 / 이력을 공유 리포지토리 (예 : github)에 푸시 (강제) 하는 것은 정말 나쁜 생각입니다. 그러면 다른 개발자가 가지고있는 리포지토리가 문제가 될 수 있습니다. (다시 작성된 기록) 변경 사항을 가져올 때 어려운 작업을 수행해야합니다.

[# 6 : 감사합니다 @toxalot!]


# 6의 경우 기록을 다시 쓸 수 있지만 로컬 기록 만 다시 쓸 수 있습니다. 일단 공개 리포지토리로 푸시되면 역사를 다시 쓰는 것은 정말 나쁜 생각입니다.
toxalot
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.