GitHub에 대한 개발자 소개

JavaScript 학습에 관심이 있으십니까? jshandbook.com에서 무료 전자 책 받기

GitHub는 수십억 줄의 코드를 호스팅하는 웹 사이트이며, 매일 수백만 명의 개발자가 오픈 소스 소프트웨어와 협력하고 문제를보고하기 위해 수백만 명의 개발자가 모이는 곳입니다.

즉, 소프트웨어 개발자를위한 플랫폼이며 Git을 기반으로 구축되었습니다.

팁 : Git에 대해 아직 모른다면 Git 안내서를 확인하십시오.

개발자는 작업의 일환으로 GitHub 또는 다른 Git 기반 도구를 매일 사용하지 않아도됩니다. 코드를 호스팅하거나 다른 사람들의 코드를 공동 작업하는 데 사용됩니다. 이 기사에서는 GitHub의 주요 개념과 일부 기능을 사용하여 워크 플로우를 개선하는 방법에 대해 설명합니다.

왜 GitHub인가?

이제 GitHub가 무엇인지 알았으므로 사용해야하는 이유를 물을 수 있습니다.

결국 GitHub는 개인 회사에서 관리하며 사람들의 코드를 호스팅하여 이익을 얻습니다. 그렇다면 BitBucket 또는 GitLab과 같은 유사한 플랫폼 대신에 왜 사용해야합니까?

개인적인 취향과 기술적 이유 외에도 한 가지 큰 이유가 있습니다. 모든 사람들이 GitHub를 사용하므로 네트워크 효과가 엄청납니다.

주요 코드베이스는 편의상 다른 버전 제어 시스템에서 Git으로 마이그레이션되었으며, GitHub는 역사적으로 오픈 소스 커뮤니티의 요구에 부응하기 위해 많은 노력을 기울였습니다.

따라서 오늘날 라이브러리를 조회 할 때마다 99 %의 시간이 GitHub에서 찾을 수 있습니다.

오픈 소스 코드 외에도 많은 개발자들이 플랫폼의 편리 성 때문에 GitHub에서 개인 저장소를 호스팅합니다.

이제 개발자가 알아야 할 중요한 Git 특정 개념을 시작해 보겠습니다.

GitHub 문제

GitHub 문제는 세계에서 가장 인기있는 버그 추적기 중 하나입니다.

리포지토리 소유자에게 문제를 구성, 태그 지정 및 이정표에 연결할 수있는 기능을 제공합니다.

다른 사람이 관리하는 프로젝트에서 이슈를 열면 이슈를 닫을 때 (예 : 문제가있는 경우) 또는 리포지토리 소유자가 이슈를 닫을 때까지 계속 열려 있습니다.

때로는 명확한 답변을 얻을 수 있으며, 때로는 문제를 분류 한 일부 정보가 열려있는 상태로 유지됩니다. 그런 다음 개발자는 문제를 해결하거나 피드백을 통해 코드베이스를 개선하기 위해 문제를 해결할 수 있습니다.

대부분의 개발자는 GitHub에서 릴리스 된 코드를 지원하기 위해 비용을 지불하지 않으므로 프롬프트 응답을 기대할 수 없습니다. 그러나 일부 오픈 소스 리포지토리는 해당 코드를 중심으로 서비스를 제공하거나 더 많은 기능을 갖춘 버전에 대한 상용 서비스를 제공하거나 플러그인 기반 아키텍처를 사용하는 회사에서 게시합니다. 그래서 그들은 오픈 소스 프로젝트를 수행하는 개발자들에게 돈을 지불했습니다.

소셜 코딩

이미지 크레디트 : https://octodex.github.com

몇 년 전, GitHub 로고에는 "사회적 코딩"태그 라인이 포함되었습니다.

이것이 무엇을 의미했으며, 여전히 관련이 있습니까? 확실합니다.

따르다

GitHub를 사용하면 사용자의 프로필로 이동하여 "팔로우"를 클릭하거나 리포지토리의 "시계"버튼을 클릭하여 개발자 또는 저장소를 팔로우 할 수 있습니다.

두 경우 모두 활동이 대시 보드에 표시됩니다. 사용자 나 저장소를 따르는 것은 Twitter와 달리 사람들이하는 말을보고 대신 사람들이하는 것을 봅니다.

GitHub의 큰 특징 중 하나는 저장소에 별표를 표시하는 기능입니다. 이 작업에는 "별표가있는 리포지토리"목록에 포함되어있어 관심있는 프로젝트를 추적하고 유사한 프로젝트를 발견 할 수 있습니다.

또한 가장 중요한 평가 메커니즘 중 하나입니다. 레포가있는 별이 많을수록 일반적으로 인기가 높고 중요합니다. 결과적으로 검색 결과에서 더 두드러지게 나타납니다.

주요 프로젝트에는 수만 개의 별이있을 수 있습니다.

GitHub에는 정해진 기간 (예 : 오늘 또는 이번 주 또는 이번 달) 동안 가장 많은 별을 얻는 리포지토리가있는 트렌드 페이지도 있습니다.

이러한 추세 목록에 들어가면 가시성이 더 높기 때문에 다른 사이트에 표시되는 것과 같은 다른 네트워크 효과가 발생할 수 있습니다.

포크

프로젝트의 마지막 중요한 네트워크 표시기는 포크 수입니다.

포크는 변경 제안 인 풀 요청 (PR)의 기반이므로 GitHub 작동 방식의 핵심입니다. 개인이 저장소를 분기하고 일부 변경을 수행 한 다음 풀 요청을 작성하여 해당 변경 사항을 병합하도록 요청할 수 있습니다.

때로는 저장소를 포크하는 사람이 절대로 병합을 요구하지 않을 수 있습니다. 그들은 코드를 좋아하고 원래 저장소로 병합하지 않으려는 무언가를 추가하기로 결정했기 때문에 저장소를 포크 할 수 있습니다. 사용자는 자신이 겪고있는 버그를 수정할 수도 있습니다.

인기있는 = 더 나은

대체로 이들은 프로젝트의 인기를 나타내는 주요 지표입니다. 위의 지표 외에도 최신 커밋 날짜와 이슈 트래커에 저자가 참여한 것은 라이브러리 나 소프트웨어에 의존해야하는지 여부를 나타내는 유용한 지표입니다.

풀 요청

이전 섹션에서는 풀 요청 (PR)이 무엇인지 소개했습니다. 반복해서 설명하기 위해 개인이 저장소를 분기하고 일부 변경을 수행 한 다음 해당 변경 사항을 병합하도록 요청하는 풀 요청을 작성할 수 있습니다.

프로젝트에는 수백 개의 PR이있을 수 있으며 일반적으로 프로젝트가 대중적 일수록 React 프로젝트와 같이 더 많은 PR이있는 경우가 있습니다.

풀 요청을 제출하면 프로젝트의 핵심 관리자가이를 검토해야합니다.

풀 요청의 범위 (변경 횟수, 변경의 영향을받는 항목 수 또는 터치 한 코드의 복잡성)에 따라 관리자는 변경 사항이 프로젝트와 호환되는지 확인하는 데 다소 시간이 필요할 수 있습니다.

프로젝트에 도입하려는 변경 일정이 명확하게있을 수 있습니다. 관리자는 풀 요청에 복잡한 아키텍처를 도입하는 동안 일을 단순하게 유지하려고 할 수 있습니다.

즉, 풀 요청이 항상 빠르게 수락되는 것은 아니며 풀 요청이 수락 될 것이라는 보장이 없습니다.

위에 게시 한 예에서 리포지토리에는 1.5 년 전의 풀 요청이 있습니다. 그리고 이것은 모든 프로젝트에서 발생합니다. 이는 매우 정상적이며 위에서 언급 한 이유 때문일 수 있습니다.

프로젝트 관리

개발자가 사용자로부터 피드백을받는 문제와 함께 GitHub 인터페이스는 몇 가지 프로젝트 관리 기능을 제공하기위한 다른 기능을 제공합니다.

그중 하나가 프로젝트입니다. 생태계에서 매우 새롭고 거의 사용되지 않지만 문제를 구성하고 수행해야하는 작업을 구성하는 데 도움이되는 Kanban 보드입니다.

위키는 사용자를위한 문서로 사용되도록 고안되었습니다. 지금까지 본 Wiki의 가장 인상적인 사용법 중 하나는 Go Programming Language GitHub Wiki입니다.

또 다른 인기있는 프로젝트 관리 지원은 이정표입니다. 이슈 페이지의 일부이며 릴리스를 목표로 할 수있는 특정 중요 시점에 이슈를 할당 할 수 있습니다.

릴리스에 대해 GitHub는 릴리스를 도입하여 Git 태그 기능을 향상 시켰습니다.

Git 태그는 특정 커밋에 대한 포인터이며, 일관성있게 수행되면 특정 커밋을 참조하지 않고 이전 버전의 코드로 롤백하는 데 도움이됩니다.

GitHub 릴리스는 Git 태그를 기반으로하며 코드의 최종 제품의 완전한 버전을 나타내는 Zip 파일, 릴리스 노트 및 이진 자산과 함께 코드의 완전한 릴리스를 나타냅니다.

명령 행 git 프로그램을 사용하여 Git 태그를 프로그래밍 방식으로 만들 수 있지만 GitHub 릴리스를 만드는 것은 GitHub UI를 통해 수행되는 수동 프로세스입니다. 기본적으로 GitHub에 새 릴리스를 작성하고 해당 릴리스를 적용 할 태그를 알려줍니다.

커밋 비교

GitHub는 코드 작업을위한 많은 도구를 제공합니다.

가장 중요한 일 중 하나는 한 가지를 다른 가지와 비교하는 것입니다. 또는 최신 커밋을 현재 사용중인 버전과 비교하여 시간이 지남에 따라 변경된 사항을 확인할 수 있습니다.

GitHub에서는 비교보기를 사용하여이 작업을 수행 할 수 있습니다. repo 이름 끝에 / compare를 추가하기 만하면됩니다.

예를 들어 https://github.com/facebook/react/compare

아래 그림에서 최신 React v15.x를이 글을 쓸 당시의 최신 v16.0.0-rc 버전과 비교하여 변경된 사항을 확인합니다.

이보기는 변경된 두 릴리스 (또는 태그 또는 커밋 참조) 사이의 커밋과 변경 횟수가 합리적인 양보다 적은 경우 실제 차이를 보여줍니다.

웹 후크 및 서비스

GitHub는 웹 후크 및 서비스와 같은 개발자 워크 플로우를 돕는 많은 기능을 제공합니다.

웹 후크

웹 후크를 사용하면 저장소에서 특정 이벤트가 발생할 때 (예 : 코드 푸시, 포크 생성 또는 태그 생성 또는 삭제) 외부 서비스를 핑 (ping) 할 수 있습니다.

이벤트가 발생하면 GitHub는 사용하도록 요청한 URL에 POST 요청을 보냅니다.

이 기능의 일반적인 사용법은 로컬 컴퓨터에서 업데이트를 푸시 할 때 원격 서버를 핑하여 GitHub에서 최신 코드를 가져 오는 것입니다.

우리는 GitHub에 푸시하고, GitHub는 푸시 한 서버에 알리고 서버는 GitHub에서 가져옵니다.

서비스

GitHub 서비스 및 새로운 GitHub 앱은 개발자 경험을 향상 시키거나 서비스를 제공하는 타사 통합입니다.

예를 들어 TravisCI를 사용하여 새로운 커밋을 푸시 할 때마다 테스트를 자동으로 실행하도록 테스트 러너를 설정할 수 있습니다.

CircleCI를 사용하여 연속 통합을 설정할 수 있습니다.

코드를 분석하고 "기술 부채"및 테스트 범위에 대한 보고서를 제공하는 Codeclimate 통합을 만들 수 있습니다.

마지막 단어

GitHub는 오늘날 개발자 도구 세트의 진정한 보석을 활용하는 놀라운 도구 및 서비스입니다. 이 튜토리얼은 시작하는 데 도움이되지만 GitHub 오픈 소스 (또는 비공개 소스) 프로젝트 작업에 대한 실제 경험을 놓치지 마십시오.

JavaScript 학습에 관심이 있으십니까? jshandbook.com에서 무료 전자 책 받기