GitHub|Memo
このページは 個人のメモです。一般の方は Git のページをご覧下さい。
基本情報
- 公開リポジトリ
https://github.com/koichi-inoue
+ Organization
https://github.com/OpenSquareJP
参加者 koichi-inoue, ksuart
- 関連リポジトリ
https://github.com/ksuart
開発環境準備
GitHub のアカウント登録
Gitクライアント のインストール
Gitクライアントには、SourceTree 、GitHub Desktop他、いろいろありますが、個人的には、GitHub Desktop が使いやすい・・
- https://desktop.github.com/ からDL
- インストール
- アプリケーションに リモートリポジトリの情報を登録
- ローカルマシン内に専用のディレクトリを確保
リポジトリの作成・更新
GitHub と Gitクライアントの利用を前提としたリポジトリの準備
- 1) GitHub(リモート)側
- GitHub上のメニュー > New repository
- 空のリモートリポジトリを命名して作成 >例:SampleProject
- 2) GitHub Desktop(ローカル)側
- File > Clone Repository
- 空のリモートリポジトリ(SampleProject)をクローン
- 必要な作業ファイルをローカルリポジトリに置く
- ファイルが置かれたことが自動認識される
- Add Data などとコメントを書いて初回コミットを行う
- ローカルリポジトリを中央リポジトリにプッシュする
- 以上の操作で、リモートリポジトリに初期のファイルがセットされる
準備完了。あとは更新。
更新作業は2とおり
最新のファイルはリモートリポジトリ(GitHub)に master-branch として存在することが前提。ファイルを更新するには、GitHubにログインして、直接リモートリポジトリのファイルを編集するか、ローカルマシン上で Gitクライアント(ここでは GitHubデスクトップ)の管理下で更新するか、2とおりある。
- リモートにアクセスして編集する場合(簡単)
- GitHubの自分のリポジトリにアクセス
- ログイン
- ファイルを開いて Edit で中身を編集
- 画面下のテキストエリアに Summary を書く
デフォルトで、Update [Filename] となっているので、そのままでもOK - Commit changes で更新完了
- ローカルマシン上で編集する場合
- リモートのデータを Fetch Origin して、ローカルを最新にする
- ローカルマシン上で更新
- Gitクライアント上で Summary を書く(必須)
- Commit ( to master)
- Push Origin でリモートを更新
共同編集
共同編集者は・・
GitHub は基本的にはファイルを管理する場所で、共同で直接編集を行う場所ではありません。そこで共同編集メンバーは以下のように作業を進めます。
- 中央リポジトリのクローンをローカルリポジトリとして手元に作成
- メンバーはそれぞれ手元でファイルの編集・更新を行い、ローカルのコミットとリモートへのプッシュを進めます。
ここで重要なことは「中央リポジトリを常に正の状態(Positive State)に保つ」ということです。中央リポジトリは随時アップデートされていて、手元のファイルが古くなっている可能性があります。したがって編集作業においては、事前にプル(リモートの変更をローカルに反映)することが必要です。自身の変更をプッシュ(ローカルの変更をリモートに反映)する場合も、まず最新の状態をプルして、自身の変更とマージ(併合)してから中央へプッシュ・・という手順になります。
プルできる状態、つまり中央の更新が先行しているにもかかわらず、プッシュしようとすると、警告が出る仕組みになっているため、中央のファイルは行き戻りなく更新されます。中央リポジトリでは直接マージは行わない。あくまでローカルリポジトリで最新データをマージした上で作業を進めます。プッシュは基本的に中央の状態を前進させる場合にのみ適用されます。
プルリクエスト(Pull Request)
GitHubのサービスにおいて、最も注目されているのが Pull Requestです。これはローカルリポジトリでの変更を他の開発者に通知する機能で、機能追加や改修などの作業内容を関係者に通知するかたちで、共同編集者間のコミュニケーションが生まれます。GitHubが謳うソーシャルコーディングの要となる機能です。
フォーク(Fork)
フォークとは他のユーザーのリポジトリを自分のアカウント内に複製することを言います。任意のユーザに対し、以下のような手順でその開発に貢献、あるいは派生版を作成することができます。
- 1)既存のリポジトリをフォーク
- 2)フォークしたリポジトリをローカルにクローン
- 3)ローカルリポジトリ内で開発作業を行う
- 4)更新を、フォークしたリポジトリにプッシュ
- 5) オリジナルの開発に貢献する場合は、オリジナルリポジトリにプルリクエストを送信
フォーク(複製)したリポジトリは自分の所有物なので、自由に更新ができます。これは従来のCopyrightとは異なるOSS開発に特有の発想です。
ここから派生した別のプロジェクトが動き出すことも多く、実際OSSには多くの派生版が存在します。
課題管理(Issue)
プログラムのバグや機能追加の要望などを管理するツールとして Issueという一種のSNS機能があります。ここには誰でも自由にコメントや画像を投稿することができるため、開発に関わる議論をわかりやすく可視化することができます。組織によっては、これをディレクター、デザイナー、営業スタッフも含めて活用しています。
GitHub ページ
GitHubリポジトリから直接Webサイトをホストする機能としてGitHub Pagesがあります。開発中のリポジトリにHTML、CSS、JavaScriptで構成された静的なウェブサイトがある場合、これをGitHubサブドメインでホストすることができます。更新と同時にチェックができる点でWeb制作のプロジェクトにとっては特筆すべき機能です。