GitHubとは何ですか?クラウドでのGitバージョン管理以上のもの

GitHubは本質的にGitリポジトリホスティングサービス、つまりクラウドベースのソースコード管理またはバージョン管理システムですが、それはほんの始まりに過ぎません。さらに、GitHubは、コードレビュー(プルリクエスト、差分、レビューリクエスト)、プロジェクト管理(問題の追跡と割り当てを含む)、他の開発者ツールとの統合、チーム管理、ドキュメント、および「ソーシャルコーディング」の機能を実装しています。

プログラマー向けのソーシャルネットワーキングサイトのようなものであるGitHubは、プログラマーがオープンソースコードで自由に共有およびコラボレーションできるオープン環境です(アドホックでも)。GitHubを使用すると、便利なコードを簡単に見つけたり、自分で使用するためにリポジトリをコピーしたり、他の人のプロジェクトに変更を送信したりできます。その結果、GitHubは、重要な事実上すべてのオープンソースプロジェクトの本拠地になりました。

オープンソースプロジェクトを探索したいときはいつでも、プロジェクト名を検索することから始めます。プロジェクトのウェブサイトを見つけたら、そのコードリポジトリのリンクを探します。10回のうち9回は、GitHubにアクセスします。

Gitバージョン管理

GitHubの機能とGitHubの動作を理解する前に、Gitを理解する必要があります。 Gitは分散バージョン管理システムであり、もともとはLinuxカーネルコミュニティのために、そしてLinuxカーネルコミュニティの助けを借りて、2005年にLinusTorvaldsによって作成されました。私はGitであなたを販売するためにここにいるわけではないので、それがどれほど速く、小さく、柔軟性があり、人気があるかについては割愛しますが、Gitリポジトリ(略して「リポジトリ」)のクローンを作成するときは知っておく必要があります。一度に1つのブランチからのスナップショットだけでなく、自分のコンピューターでバージョン履歴全体を取得します。

Gitはコマンドラインツールとして始まり、Linuxカーネルコミュニティでの起源にふさわしいものでした。必要に応じて、Gitコマンドラインを引き続き使用できますが、使用する必要はありません。コマンドラインの代わりに、またはコマンドラインに加えて、WindowsまたはMacの無料のGitHubクライアント、Git用の他の多数のGUI、またはGitと統合されたコードエディターを使用できます。これらのオプションはすべて、最初はコマンドラインよりも使いやすいです。 GitコマンドラインはほとんどのMacおよびLinuxシステムにプリインストールされており、すべての操作をサポートしています。 GUIは通常、頻繁に使用されるGit操作のサブセットをサポートします。

Gitは、一元化されるのではなく分散されるという点で、Subversionなどの古いバージョン管理システムとは異なります。また、特にほとんどの操作がローカルリポジトリで行われるため、非常に高速です。それにもかかわらず、使用してGitは複雑さのレベルを追加します:コミットローカルリポジトリにコードをし、プッシュリモートリポジトリにコミットすることは別々のステップです。チームがこれを忘れた場合(またはそれについて教えられなかった場合)、さまざまな開発者が分岐したコードベースで作業している状況につながる可能性があります。

リモートGitリポジトリはサーバー上にある場合もあれば、別の開発者のマシン上にある場合もあります。これにより、チームで可能な多くのワークフローが可能になります。一般的なワークフローの1つは、サーバーリポジトリを「祝福された」リポジトリとして使用することです。このリポジトリには、多くの場合、開発者のリポジトリから発行されるプルリクエストを通じて、十分にテストされたコードのみがコミットされます。

GitHubの機能

GitHubはコードホスティングとソーシャルコーディング用のクラウドベースのGitサーバーであり、コードレビュー(プルリクエスト、差分、レビューリクエスト)、プロジェクト管理(問題の追跡と割り当てを含む)、他の開発者ツール、チーム管理、およびドキュメントとの統合。

GitHubのソーシャルコーディングの最新のイノベーションは、コミット共著者です。これは、コミットメッセージの最後に1つ以上の「共著者」トレーラーを追加することで実現します。このメカニズムはリポジトリコア自体には影響せず、プレーンGitでのリポジトリの外観を変更しませんが、GitHubでは、クロムはコミットリストに複数のコミッターを表示し、各共著者にクレジットを付与します寄与グラフ。

必要に応じて、GitHub GraphQLAPIを使用して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

ホストされている拡張GitサービスはGitHubだけではありません。また、企業向けのオンプレミス製品はGitHubEnterpriseだけではありません。Atlassian Bitbucketは、わずかに低価格で、無制限のプライベートリポジトリと継続的インテグレーションのためのBitbucket Pipelinesの使用を含む、無料の5人のメンバーのチームレベルで、両方と競合します。GitHubは、オープンソースプロジェクトでより人気のあるサイトであり、オープンソース開発者のプールがはるかに多くなっています。Bitbucketの価格設定は、小規模な新興企業にとってより有利です。

GitHubとGitLab

GitLabは、ホスト型とオンプレミス型の両方で、GitHubとBitbucketの両方と競合します。一見すると、GitLabは他の機能よりもライフサイクル機能が多いように見えますが、Bitbucketを評価するときにJiraを含めると、Atlassianとの違いはほとんどなくなります。GitLabは、オープンソースプロジェクトにゴールドプランのクラウド機能を無料で提供しますが、その追加機能は、GitHubの大規模なオープンソース開発者コミュニティを実際に補うものではありません。

GitHubデスクトップ

以下に示すGitHubデスクトップを使用すると、GitHub.comおよびGitHubEnterpriseリポジトリを簡単に管理できます。GitコマンドラインとGitHubWeb GUIのすべての機能を実装ているわけではありませんが、プロジェクトに貢献しながらデスクトップから日常的に行うすべての操作を実装しています。通常、リポジトリをGitHubからGitHubデスクトップに複製し、必要に応じて同期し、作業用のブランチを作成し、作業をコミットし、場合によっては1つ以上のコミットを元に戻します。

コミットとコラボレーションの権限が不足しているリポジトリを操作するには、通常、GitHubでリポジトリをフォークし、そのフォークをデスクトップに複製することから始めます。次に、GitHubデスクトップに必要なブランチを追加し、必要な変更をコミットし、作業をテストし、コミットをリモートフォークリポジトリにプッシュして戻し、最後に親プロジェクトへのプルリクエストを生成します。

GitHubデスクトップインターフェイスの右上に[プルリクエスト]ボタンが表示されます。また、Neo4jプロジェクトには、ブランチまたはプルリクエストのマージである多くのコミットが表示されます。これは、コミッターが少なく、貢献者が多いオープンソースプロジェクトの典型です。

Atomエディター

GitHubおよびGitHubDesktopとうまく統合されるGitHubの無料のオープンソースのハッキング可能なAtomエディター(以下に表示)など、コードを編集するために好きなプログラミングエディターを使用できます。Atomは、MacOS、Windows、またはLinuxで使用できます。参照または編集するリポジトリを右クリックすると、GitHubデスクトップからAtomを開くことができます。

Atomには、約90のパッケージ、4つのUIテーマ、および8つの構文テーマが付属しています。Atomのインストールには、7,000個のパッケージと2,000個のテーマのいずれかを追加できます。パッケージは、TypeScriptなどの特定のプログラミング言語をサポートしたり、Python、R、JavaScript、その他のJupyterカーネルをサポートするインタラクティブなコーディング環境であるHydrogenなどの機能を追加したりできます。

Atomは、HTML、JavaScript、CSS、およびNode.jsの統合で構築されています。これは、Webテクノロジーを使用してクロスプラットフォームアプリを構築するためのフレームワークであるElectron上で実行されます。GitHubデスクトップもElectronで実行されます。

GitHubプロジェクト

オープンソースソフトウェアプロジェクトでは、コミッターのコアチームの外部からの貢献を受け入れながら、品質管理を実施する方法が必要になることがよくあります。コントリビューターの必要性は非常に大きいですが、コードベースの整合性を維持しながらプロジェクトに新しいコントリビューターを参加させることは困難であり、潜在的に危険な作業です。同時に、プロジェクトのユーザーからのフィードバックの必要性も非常に大きいです。

GitHubには、オープンソースプロジェクトの車輪にグリースを塗るのに役立つメカニズムがいくつかあります。たとえば、ユーザーはGitHubのプロジェクトに問題を追加して、バグを報告したり、機能をリクエストしたりできます。他のいくつかのシステムはこれらのチケットを呼び出します。問題を処理するプロジェクトマネージャーは、タスクリストを生成し、特定の寄稿者に課題を割り当て、他の関心のある寄稿者に言及して、変更の通知、ラベルの追加、マイルストーンの追加を行うことができます。

プロジェクトに貢献するには、基本的に、プロジェクトベースブランチに追加するコミットされた変更を含むトピックヘッドブランチから開始し、以下に示すように、ヘッドブランチからのプルリクエストを初期化します。次に、コミットをプッシュして、プロジェクトブランチに追加します。他の寄稿者は、提案された変更をレビューし、レビューコメントを追加し、プルリクエストのディスカッションに寄稿し、プルリクエストに独自のコミットを追加できます。

関係者全員が提案された変更に満足したら、コミッターはプルリクエストをマージできます。マージでは、すべてのコミットを保持したり、すべての変更を1つのコミットに押しつぶしたり、ヘッドブランチからベースブランチにコミットをリベースしたりできます。マージによって競合が発生した場合は、GitHubまたはコマンドラインを使用して競合を解決できます。

GitHubのコードレビューにより、分散したチームが非同期で共同作業を行うことができます。レビュー担当者にとって便利なGitHubツールには、差分(下のスクリーンショットの下半分)、履歴(上半分)、および非難ビュー(コミットごとにファイルコミットの進化を表示する方法)が含まれます。GitHubでのコードの議論は、コードの変更に合わせて提示されるコメントに入ります。組み込みツールがプロジェクトに十分でない場合は、GitHubマーケットプレイスからコードレビューと継続的インテグレーションツールを追加できます。マーケットプレイスのアドオンは、多くの場合、オープンソースプロジェクトでは無料です。

GitHubの要点

要旨は、作業を共有するため(公開)または後で再利用するために作業を保存するため(秘密)のための特別なGitHubリポジトリです。それらには、単一のファイル、ファイルの一部、または完全なアプリケーションを含めることができます。要旨をダウンロードし、クローンを作成し、フォークし、埋め込むことができます。

公開の要点は、検索で発見および発見できます。キーワードを使用して、検索結果を特定のユーザーからの要点、少なくともNつ星の要点、特定のファイル名の要点などに制限するプレフィックスなど、検索対象を絞り込むことができます。

秘密の要点は検索できませんが、URLを知っている人なら誰でも見ることができます。コードを本当に保護したい場合は、プライベートリポジトリを使用してください。

これまで見てきたように、GitHubは、コードレビュー、プロジェクト管理、他の開発者ツールとの統合、チーム管理、ソーシャルコーディング、ドキュメントの機能とともに、Gitリポジトリをサービスとして提供します。GitHubはそのカテゴリの唯一の製品ではありませんが、オープンソースソフトウェア開発の主要なリポジトリです。