GitHub 란 무엇입니까? 클라우드에서 Git 버전 제어 이상

GitHub는 클라우드 기반 소스 코드 관리 또는 버전 제어 시스템과 같은 Git 저장소 호스팅 서비스의 핵심이지만 이는 시작에 불과합니다. 또한 GitHub는 코드 검토 (풀 요청, 차이 및 검토 요청), 프로젝트 관리 (문제 추적 및 할당 포함), 다른 개발자 도구와의 통합, 팀 관리, 문서화 및 "소셜 코딩"을위한 기능을 구현합니다.

프로그래머를위한 소셜 네트워킹 사이트와 같은 GitHub는 프로그래머가 오픈 소스 코드를 자유롭게 공유하고 공동 작업 할 수있는 개방형 환경입니다. GitHub를 사용하면 유용한 코드를 쉽게 찾고, 자신이 사용할 리포지토리를 복사하고, 다른 사람의 프로젝트에 변경 사항을 제출할 수 있습니다. 그 결과 GitHub는 사실상 모든 중요한 오픈 소스 프로젝트의 본거지가되었습니다.

오픈 소스 프로젝트를 탐색하고 싶을 때마다 먼저 프로젝트 이름을 검색합니다. 프로젝트 웹 사이트를 찾으면 코드 저장소 링크를 찾고 10 개 중 9 번은 GitHub에 연결됩니다.

Git 버전 제어

GitHub의 기능과 GitHub의 작동 방식을 이해하려면 먼저 Git을 이해해야합니다. Git은 원래 Linux 커널 커뮤니티의 도움을 받아 2005 년 Linus Torvalds가 작성한 분산 버전 제어 시스템입니다. 나는 Git에서 당신을 팔기 위해 여기있는 것이 아니기 때문에 그것이 얼마나 빠르고 작고 유연하며 인기가 있는지에 대해 이야기 할 것입니다. 그러나 당신은 당신이 Git 저장소를 복제 할 때 알고 있어야합니다 (줄여서“repo”) 한 번에 한 지점의 스냅 샷뿐 아니라 자신의 컴퓨터에서 전체 버전 기록을 얻을 수 있습니다.

Git은 Linux 커널 커뮤니티의 기원에 걸맞게 명령 줄 도구로 시작되었습니다. 원하는 경우 Git 명령 줄을 계속 사용할 수 있지만 그럴 필요는 없습니다. 명령 줄 대신 또는 추가로 Windows 또는 Mac에서 무료 GitHub 클라이언트를 사용하거나 Git 용 기타 여러 GUI 또는 Git과 통합되는 코드 편집기를 사용할 수 있습니다. 이러한 모든 옵션은 처음에는 명령 줄보다 사용하기가 더 쉽습니다. Git 명령 줄은 대부분의 Mac 및 Linux 시스템에 사전 설치되어 있으며 모든 작업을 지원 합니다 . GUI는 일반적으로 자주 사용되는 Git 작업의 하위 집합을 지원합니다.

Git은 중앙 집중식이 아니라 분산되어 있다는 점에서 Subversion과 같은 이전 버전 제어 시스템과 다릅니다. 특히 대부분의 작업이 로컬 저장소에서 이루어지기 때문에 매우 빠릅니다. 그럼에도 불구하고, 사용 망할 놈의 복잡성의 수준을 추가 투입 하여 로컬 저장소에 코드를하고 밀어 원격 저장소에 커밋하는 별도의 단계입니다. 팀이 이것을 잊어 버리거나 (또는 ​​그것에 대해 배우지 않았을 때) 다른 개발자들이 서로 다른 코드 기반으로 작업하는 상황으로 이어질 수 있습니다.

원격 Git 저장소는 서버에있을 수도 있고 다른 개발자의 컴퓨터에있을 수도 있습니다. 이를 통해 팀을위한 가능한 많은 워크 플로가 가능합니다. 일반적인 워크 플로 중 하나는 서버 저장소를 "축복 된"저장소로 사용하는 것입니다.이 저장소에는 검토되고 잘 테스트 된 코드 만 커밋되며 종종 개발자의 저장소에서 발행 된 풀 요청을 통해 이루어 집니다.

GitHub 기능

GitHub는 코드 호스팅 및 소셜 코딩을위한 클라우드 기반 Git 서버이며 코드 검토 (pull 요청, diff 및 검토 요청), 프로젝트 관리 (문제 추적 및 할당 포함)를위한 기능을 구현하고 있음을 이미 언급했습니다. 다른 개발자 도구, 팀 관리 및 문서와의 통합.

GitHub에서 제공하는 소셜 코딩의 최신 혁신은 커밋 공동 작성자 입니다. 커밋 메시지 끝에 하나 이상의 "공동 작성자 "트레일러를 추가하여 수행 할 수 있습니다. 이 메커니즘은 리포지토리 코어 자체에 영향을 주지 않으며 일반 Git에서 리포지토리가 보이는 방식을 변경하지 않지만 GitHub에서 크롬 은 커밋 목록에 여러 커미터를 표시하고 각 공동 작성자에게 자신의 크레딧을 부여합니다. 기여도 그래프.

원하는 경우 GitHub GraphQL API를 사용하여 GitHub를 확장 할 수 있습니다. 이는 REST 호출을 기반으로 한 GitHub의 이전 API에 비해 크게 개선 된 것입니다.

GitHub Enterprise

GitHub.com은 다양한 계정 유형을 처리 할 수있는 클라우드 호스팅 서비스입니다 : 무료 (공개 저장소 만 해당) 및 유료 (월 7 달러) 개발자 계정, 팀 (사용자 당 월 9 달러) 및 비즈니스 (사용자 당 월 21 달러) ). GitHub Enterprise를 온 프레미스 또는 AWS, Microsoft Azure, Google Cloud Platform 또는 IBM Cloud의 자체 클라우드 인스턴스에서 실행하려는 경우 호스팅 된 비즈니스 계정과 동일한 가격으로 사용자 당 월 21 달러로 실행할 수 있습니다. GitHub Enterprise는 사용자에게 앱 내 메시징 및 LDAP 디렉토리와 통합 된 액세스 프로비저닝과 같은 몇 가지 유용한 기능을 추가하지만 호스팅 된 비즈니스 계정에 대한 GitHub.com의 99.95 % 가동 시간 SLA를 포기합니다.

GitHub 대 Bitbucket

GitHub는 호스팅 된 유일한 향상된 Git 서비스가 아니며 GitHub Enterprise는 회사를위한 유일한 온 프레미스 제품이 아닙니다. Atlassian Bitbucket은 약간 더 저렴한 가격과 무제한 개인 저장소 및 지속적인 통합을위한 Bitbucket Pipelines 사용을 포함하는 무료 5 인 팀 수준으로 두 가지 모두와 경쟁합니다. GitHub는 오픈 소스 프로젝트에 더 인기있는 사이트이며 훨씬 더 많은 오픈 소스 개발자 풀을 보유하고 있습니다. Bitbucket의 가격은 소규모 스타트 업에 더 유리합니다.

GitHub 대 GitLab

GitLab은 호스팅 및 온 프레미스에서 GitHub 및 Bitbucket과 경쟁합니다. 표면적으로 GitLab은 다른 것보다 수명주기 기능이 더 많은 것으로 보이지만 Bitbucket을 평가할 때 Jira를 포함하면 Atlassian과의 차이점은 대부분 사라집니다. GitLab은 무료로 오픈 소스 프로젝트에 골드 플랜 클라우드 기능을 제공하지만 추가 기능이 GitHub의 대규모 오픈 소스 개발자 커뮤니티를 실제로 보완하지는 않습니다.

GitHub 데스크톱

아래에 표시된 GitHub Desktop을 사용하면 GitHub.com 및 GitHub Enterprise 리포지토리를 쉽게 관리 할 수 ​​있습니다. Git 명령 줄 및 GitHub 웹 GUI의 모든 기능을 구현하지는 않지만 프로젝트에 기여하면서 데스크톱에서 매일 수행 할 모든 작업을 구현합니다. 일반적으로 GitHub에서 GitHub Desktop으로 리포지토리를 복제하고, 필요에 따라 동기화하고, 작업을위한 브랜치를 생성하고, 작업을 커밋하고, 때때로 하나 이상의 커밋을 되돌립니다.

커밋 및 공동 작업 권한이없는 리포지토리로 작업하려면 일반적으로 GitHub에서 리포지토리를 포크하고 데스크톱에 포크를 복제하여 시작합니다. 그런 다음 GitHub Desktop에서 필요한 브랜치를 추가하고, 원하는 변경 사항을 커밋하고, 작업을 테스트하고, 커밋을 원격 포크 된 리포지토리로 다시 푸시하고, 마지막으로 상위 프로젝트에 대한 풀 요청을 생성합니다.

GitHub Desktop 인터페이스의 오른쪽 상단에 Pull Request 버튼이 있습니다. Neo4j 프로젝트에서 브랜치 병합 또는 풀 리퀘스트 인 많은 커밋을 볼 수도 있습니다. 이는 커미터가 적고 기여자가 많은 오픈 소스 프로젝트의 전형입니다.

Atom 편집기

GitHub 및 GitHub Desktop과 잘 통합되는 GitHub의 무료 오픈 소스 해킹 가능한 Atom 편집기 (아래 표시)를 포함하여 원하는 프로그래밍 편집기를 사용하여 코드를 편집 할 수 있습니다. MacOS, Windows 또는 Linux에서 Atom을 사용할 수 있습니다. 찾아 보거나 편집하려는 저장소를 마우스 오른쪽 버튼으로 클릭하여 GitHub Desktop에서 Atom을 열 수 있습니다.

Atom은 약 90 개의 패키지, 4 개의 UI 테마 및 8 개의 구문 테마와 함께 제공됩니다. Atom 설치에 7,000 개의 패키지와 2,000 개의 테마를 추가 할 수 있습니다. 패키지는 TypeScript와 같은 특정 프로그래밍 언어를 지원하거나 Python, R, JavaScript 및 기타 Jupyter 커널을 지원하는 대화 형 코딩 환경 인 Hydrogen과 같은 기능을 추가 할 수 있습니다.

Atom은 HTML, JavaScript, CSS 및 Node.js 통합으로 빌드됩니다. 웹 기술을 사용하여 크로스 플랫폼 앱을 구축하기위한 프레임 워크 인 Electron에서 실행됩니다. GitHub Desktop은 Electron에서도 실행됩니다.

GitHub 프로젝트

오픈 소스 소프트웨어 프로젝트는 종종 핵심 커미터 팀 외부의 기여를 받아들이면서도 품질 관리를 시행 할 수있는 방법이 필요합니다. 기여자의 필요성은 엄청나지만, 코드베이스의 무결성을 유지하면서 새로운 기여자를 프로젝트에 참여시키는 것은 어렵고 잠재적으로 위험한 작업입니다. 동시에 프로젝트 사용자의 피드백에 대한 필요성도 엄청납니다.

GitHub에는 오픈 소스 프로젝트의 바퀴에 기름칠을 할 수있는 여러 메커니즘이 있습니다. 예를 들어 사용자는 GitHub의 프로젝트에 문제 를 추가 하여 버그를보고하거나 기능을 요청할 수 있습니다. 다른 시스템에서는 이러한 티켓을 호출합니다 . 이슈를 다루는 프로젝트 관리자는 작업 목록을 생성하고, 특정 기여자에게 이슈를 할당하고, 관심있는 다른 기여자를 언급하여 변경 사항을 알리고, 레이블을 추가하고, 중요 시점을 추가 할 수 있습니다.

프로젝트에 기여하려면 기본적으로 프로젝트 기본 브랜치에 추가하려는 커밋 된 변경 사항이 포함 된 토픽 헤드 브랜치 에서 시작 하고 아래와 같이 헤드 브랜치에서 풀 요청 을 초기화 합니다. 그런 다음 커밋을 푸시하고 프로젝트 브랜치에 추가합니다. 다른 기여자는 제안 된 변경 사항을 검토하고, 검토 주석을 추가하고, 풀 요청 토론에 기여하고, 풀 요청에 자신의 커밋을 추가 할 수 있습니다.

관련된 모든 사람이 제안 된 변경 사항에 만족하면 커미터는 풀 요청을 병합 할 수 있습니다. 병합은 모든 커밋을 보존하고, 모든 변경 사항을 단일 커밋으로 스쿼시하거나, 헤드 브랜치에서 기본 브랜치로 커밋을 리베이스 할 수 있습니다. 병합으로 인해 충돌이 발생하는 경우 GitHub에서 또는 명령 줄을 사용하여 해결할 수 있습니다.

GitHub의 코드 검토를 통해 분산 된 팀이 비동기식으로 협업 할 수 있습니다. 검토자를위한 유용한 GitHub 도구에는 diffs (아래 스크린 샷의 아래쪽 절반), 내역 (상단 절반), blame view (커밋별로 파일 커밋의 진화를 보는 방법)가 있습니다. GitHub의 코드 토론은 코드 변경과 함께 인라인으로 표시되는 주석으로 이동합니다. 기본 제공 도구가 프로젝트에 충분하지 않은 경우 GitHub 마켓 플레이스에서 코드 검토 및 지속적 통합 도구를 추가 할 수 있습니다. Marketplace 애드온은 종종 오픈 소스 프로젝트에 대해 무료입니다.

GitHub 요점

Gists는 작업을 공유 (공개)하거나 나중에 재사용 (비밀)하기 위해 작업을 저장하기위한 특수 GitHub 저장소입니다. 단일 파일, 파일의 일부 또는 전체 응용 프로그램을 포함 할 수 있습니다. 요점을 다운로드하고, 복제하고, 포크하고, 포함 할 수 있습니다.

공개 요점은 검색에서 발견되고 찾을 수 있습니다. 특정 사용자의 요점, 최소 N 개의 별이있는 요점, 특정 파일 이름이있는 요점 등으로 결과를 제한하는 접두사를 포함하여 찾은 내용의 범위를 좁히기 위해 키워드를 사용할 수 있습니다 .

비밀 요점은 검색 할 수 없지만 URL이있는 사람은 누구나 볼 수 있습니다. 정말로 코드를 보호하려면 개인 저장소를 사용하십시오.

지금까지 살펴본 것처럼 GitHub는 코드 검토, 프로젝트 관리, 다른 개발자 도구와의 통합, 팀 관리, 소셜 코딩 및 문서 기능과 함께 Git 리포지토리를 서비스로 제공합니다. GitHub가 해당 카테고리의 유일한 제품은 아니지만 오픈 소스 소프트웨어 개발을위한 지배적 인 저장소입니다.