LogoMark.png

GitHub の変更点


#author("2019-09-24T14:43:27+09:00","default:inoue.ko","inoue.ko")
*GitHub
https://github.com/
~

[[GitHub(ギットハブ)>https://github.com/]]は、GitHub社という会社によって運営されている [[OSS>OpenSource]] のホスティングサービスで、分散型バージョン管理室システム [[Git]] の仕組みを利用して、プログラムのソースコードをはじめ、様々なファイルを保存、公開することができるようにしたものです。Firefox, Atom といった著名なものから、個人の開発したアプリやWebページまで、多くのソフトウエアのソースコードをホスティングしています。
-事例:https://github.com/search?q=Firefox

オープンな開発であれば、無料で利用可能です(非公開リポジトリは有料)。

~


**GitHubの利用
以下、GitHubの利用手順を概説します。
~

***アカウントの取得
GitHubを利用するには、まずアカウントの取得が必要です。手続きは簡単でメールアドレスの認証が済めばすぐに利用できます。個人Userアカウントからスタートすることになりますが、さらにOrganizationアカウントの追加が可能で、ここに他のGitHubユーザーを招待することで、リポジトリの共同編集が可能になります。
~

***中央リポジトリの構築
まずGitHubすなわちリモートサーバー上に中央(リモート)リポジトリが必要となります。一般にリーダーが以下のような手順でこれを構築します。

-1) GitHub上のメニューNewRepository から、空のリモートリポジトリを作成
-2) 空のリモートリポジトリをクローンして、自分のローカルマシン上にローカルリポジトリを作成
-3) 必要なファイルをローカルリポジトリ管理下に置いて初回コミットを行う
-4) 中身が入ったローカルリポジトリを中央リポジトリにプッシュ

以上の操作で、中央(リモート)リポジトリに初期のファイルがセットされることになります。
~

***共同編集者がそれぞれクローンを作成
GitHub は基本的にはファイルを管理する場所で、共同で直接編集を行う場所ではありません。そこで共同編集メンバーは、まず中央リポジトリのクローンをローカルリポジトリとして手元に作成します。
~

***共同編集者による プル と プッシュ
メンバーはそれぞれ手元でファイルの編集・更新を行い、ローカルのコミットとリモートへのプッシュを進めます。

ここで重要なことは「中央リポジトリを常に正の状態(Positive State)に保つ」ということです。中央リポジトリは随時アップデートされていて、手元のファイルが古くなっている可能性があります。したがって編集作業においては、事前にプル(リモートの変更をローカルに反映)することが必要です。自身の変更をプッシュ(ローカルの変更をリモートに反映)する場合も、まず最新の状態をプルして、自身の変更とマージ(併合)してから中央へプッシュ・・という手順になります。
 プルできる状態(つまり中央の更新が先行している)にもかかわらず、プッシュしようとすると、警告が出る仕組みになっているため、中央のファイルは行き戻りなく更新されます。中央リポジトリでは直接マージは行わない。あくまでローカルリポジトリで最新データをマージした上で作業を進めます。プッシュは基本的に中央の状態を前進させる場合にのみ適用されます。

#image(Git/Fig12.png,right,30%)
右図(クリックで拡大)は、ローカルの変更をリモートにプッシュする様子です。ahead という表記は、ローカルの作業がリモートに先行していることを意味し、この状態でプッシュが可能です。プッシュが反映されると、GitHub上でもコミット単位での変更点が確認できます。

~

***プルリクエスト(Pull Request)
GitHubのサービスにおいて、最も注目されているのが Pull Requestです。これはローカルリポジトリでの変更を他の開発者に通知する機能で、機能追加や改修などの作業内容を関係者に通知するかたちで、共同編集者間のコミュニケーションが生まれます。GitHubが謳う''ソーシャルコーディング''の要となる機能です。
~

***フォーク(Fork)
フォークとは他のユーザーのリポジトリを自分のアカウント内に複製することを言います。任意のユーザに対し、以下のような手順でその開発に貢献、あるいは派生版を作成することができます。

-1)既存のリポジトリをフォーク
-2)フォークしたリポジトリをローカルにクローン
-3)ローカルリポジトリ内で開発作業を行う
-4)更新を、フォークしたリポジトリにプッシュ
-5) オリジナルの開発に貢献する場合は、オリジナルリポジトリにプルリクエストを送信

フォーク(複製)したリポジトリは自分の所有物なので、自由に更新ができます。これは従来のCopyrightとは異なるOSS開発に特有の発想です。
 ここから派生した別のプロジェクトが動き出すことも多く、実際OSSには多くの派生版が存在します。
~

***課題管理(Issue)
プログラムのバグや機能追加の要望などを管理するツールとして Issueという一種のSNS機能があります。ここには誰でも自由にコメントや画像を投稿することができるため、開発に関わる議論をわかりやすく可視化することができます。組織によっては、これをディレクター、デザイナー、営業スタッフも含めて活用しています。
~

***GitHub ページ
GitHubリポジトリから直接Webサイトをホストする機能として[[GitHubPages]]があります。開発中のリポジトリにHTML、CSS、JavaScriptで構成された静的なウェブサイトがある場合、これをGitHubサブドメインでホストすることができます。更新と同時にチェックができる点でWeb制作のプロジェクトにとっては特筆すべき機能です。
-ページを独立させました > [[GitHubPages]]

~
~

**付記:GitHubソースの埋め込み

***gist-it
[[gist-it.appspot.com  –  Embed files from a github repository like a gist>http://gist-it.appspot.com/]]
というサービスを利用すると簡単です。

以下のいずれかのソースを書くだけで簡単にHTMLに埋め込み可能です。
 <script src="http://gist-it.appspot.com/http://github.com/$file"></script>
 <script src="http://gist-it.appspot.com/github/$file></script>
上記2行は書き方が違うだけで、同じ動作をします。
要は、src=の部分、http://gist-it.appspot.com/ に続けて、ファイルのアドレスをそのまま入力すればOK・・ということです。
$file の部分は、一般に以下の形式です。
 ユーザ名/リポジトリ名/・・/ブランチ名/ファイル名

以下、具体的な埋め込み事例です。以下のコードが埋め込まれています。
 <script src="http://gist-it.appspot.com/github/koichi-inoue/SampleSite/blob/master/index.html"></script>

#gistit(koichi-inoue/SampleSite/blob/master/index.html)

~

***gist
GitHubのアカウントを持っている人であれば、Gistを使って、ソースの埋め込みコードを取得することもできます。

-アカウントアイコン横の +メニューから New Gist を選択
-ファイル名とソースコードを入力
-「Create public gist」をクリック。
-上部に表示される Webページ貼付用のタグをコピーして貼り付ければOK

以上。

~
~