Skip to main content
Skip to content

프로젝트에 대한 코드 작성

분기, 포크, 커밋 및 끌어오기 요청을 사용하여 공동 작업 프로젝트에 대한 코드 변경 내용을 안전하게 작성, 구체화 및 제안할 수 있습니다.

프로젝트에 참여할 때 주 코드 베이스에 영향을 미치기 전에 코드를 작성하고 구체화할 수 있는 안전한 장소가 필요합니다. 분기, 포크, 커밋 및 끌어오기 요청은 함께 작동하여 해당 공간을 제공하므로 실험하고, 작업을 증분 방식으로 체크 인하고, 검토를 위해 완료된 변경 내용을 제안할 수 있습니다.

브랜치와 포크로 작업 분리하기

대부분의 작업은 자유롭게 변경할 수 있는 코드의 격리된 복사본을 만들어 시작합니다.

  • 리포지토리에 대한 쓰기 권한이 있는 경우 분기 를 사용합니다. 분기를 사용하면 다른 분기에 영향을 주지 않고 리포지토리의 포함된 영역에서 기능을 개발하거나 버그를 수정하거나 실험할 수 있습니다. 기존 분기(일반적으로 기본 분기)에서 분기를 만듭니다.
  • 쓰기 권한이 없거나 원래 프로젝트에서 완전히 독립하려는 경우 포크 를 사용합니다. 포크는 원래 "업스트림" 리포지토리와 코드 및 표시 유형 설정을 공유하는 별도의 리포지토리입니다. 자체 브랜치, 이슈 및 풀 리퀘스트가 있습니다. 포크를 사용하면 업스트림 리포지토리에 대한 끌어오기 요청을 열 수도 있습니다.

일반적으로 공유 리포지토리에서 이미 협업하고 있다면 분기가 가장 간단한 선택입니다. 포크는 업스트림 리포지토리에 대한 쓰기 액세스 권한이 없는 오픈 소스 기여에 가장 적합한 선택입니다.

커밋으로 작업 체크인

코드를 작성할 때 작고 의미 있는 변경 내용 그룹을 커밋으로 저장합니다. 각 커밋은 변경된 내용을 설명하는 메시지와 함께 작업의 스냅샷을 기록하므로 기록을 더 쉽게 추적하고, 변경 내용을 검토하고, 코드가 어떻게 발전했는지 이해할 수 있습니다.

분기 또는 포크에서 자주 커밋하면 다음을 수행할 수 있습니다.

  • 더 큰 변경 사항을 검토 가능한 단계로 나누세요.
  • 실험이 작동하지 않는 경우 이전 상태로 롤백합니다.
  • 검토자에게 최종 변경에 어떻게 도착했는지에 대한 명확한 기록을 제공합니다.

끌어오기 요청을 사용하여 변경 제안

작업을 공유할 준비가 되면 끌어오기 요청을 열어 변경 내용을 기본 분기로 병합할 것을 제안합니다. 풀 리퀘스트는 커밋, 변경 사항에 대한 설명, 그리고 병합되기 전에 이를 논의하고 평가하는 데 검토자에게 필요한 도구를 한데 모아 제공합니다.

검토를 공식적으로 요청하지 않고 변경 내용을 공유하는 초안 끌어오기 요청을 만들어 작업이 진행 중인 동안 끌어오기 요청을 열 수 있습니다. 이는 조기 피드백을 원하거나 코드에 대해 자동화된 검사를 실행하려는 경우에 유용합니다.

코드를 최신 상태로 유지하고 최적화

끌어오기 요청이 열려 있는 동안 다른 사용자가 작업을 병합할 때 기본 분기가 계속 변경됩니다. 변경 내용을 정리하고 충돌을 줄이려면 다음을 수행할 수 있습니다.

  • 내 변경 사항으로 인해 추가된 내용에만 diff가 집중되도록, 기본 브랜치를 내 브랜치에 자주 병합하거나 리베이스하세요. GitHub는 기본적으로 베이스 브랜치에서 분기된 시점을 기준으로 현재 브랜치와 비교하는 3점 비교를 표시합니다.
  • 검토를 요청하기 전에, 지저분한 커밋 기록을 정리할 수 있도록 커밋 순서를 바꾸거나, 합치거나, 커밋 메시지를 다듬는 방식으로 리베이스하세요.
  • Git에서 경쟁 변경 내용을 자동으로 결합할 수 없는 경우 병합 충돌을 해결합니다.

리포지토리 컨트롤 내에서 작업

숙련된 기여자는 리포지토리가 정의하는 가드레일 내에서 작업합니다. 이러한 제어 설정은 어디에 푸시할 수 있는지, 누가 작업을 승인해야 하는지, 그리고 병합되기 전에 무엇이 통과해야 하는지를 결정합니다.

  • 보호된 분기 및 규칙 집합은 중요한 분기에 대한 직접 푸시를 차단하고, 선형 기록 또는 서명된 커밋을 요구하며, 병합하기 전에 상태 검사 또는 검토가 필요할 수 있습니다.
  • 코드 소유자는 변경 내용이 소유한 파일에 영향을 미칠 때 자동으로 검토를 요청하므로 중요한 영역에 대한 승인을 계획합니다.
  • 푸시 규칙 집합은 포크 네트워크에 적용되어 모든 포크의 파일 경로, 크기 또는 이름을 제한할 수 있습니다.
  • 사전 수신 후크를 사용하면 커밋이 GitHub Enterprise Server 수락되기 전에 관리자가 서버에서 정책 검사를 적용할 수 있습니다.

통합 도구 체인

끌어오기 요청은 코드를 빠르고 안전하게 작성하는 데 도움이 되는 자동화 및 서비스에 코드를 연결합니다.


GitHub Copilot ** 는 코드를 작성, 디버그 및 최적화하는 데 도움이 됩니다.

  • Code scanning 변경 Dependabot 내용이 끌어오기 요청을 통해 이동함에 따라 보안 문제와 취약한 종속성을 노출하므로 보안 코딩 사례를 조기에 적용할 수 있습니다.
  • GitHub Actions 는 끌어오기 요청에 대한 모든 푸시에서 연속 통합을 실행하여 변경 내용을 자동으로 빌드하고 테스트할 수 있습니다.

추가 읽기