リンク:
アリスブログ > 「ALISのAPI」を使用する方法まとめ > 当記事
◆ 【Github】共同開発の環境を整える方法
どうも、ALISハッカー部の「ゆうき」です。
ここでは、「Github」のプロジェクトでチーム開発ができるようになるための知識を、リンク主体で説明していきます。
○ 留意事項
・Windows10のローカル環境を前提としています
・Macにとっては、説明が少々異なる状態になっていますが、下記に掲示されているリンクのページを閲覧していけば、Macユーザーでも共同開発の環境を整えることができます
・この記事を一通り実践して理解するまでに、おおよそ1日(4~8時間)ほどかかります
・ALISハッカー部の「ひらいくん」に教えてもらうまで、私もド素人でした。そのため、説明が不足している可能性もあります
○ 注意事項
・「Github」の環境構築は、かなり面倒なため、説明が不十分になっていることもあります。……そのため、準備をするときは(可能であれば、)2つのサイトを比較しながら試してみることをオススメします
○ アドバイス
・「情報サイトのURL」や「入力したコマンド」とかは、メモ帳などに書き残しておきましょう。gitの2回目以降の起動の際や、よくわからなくなった時に役立ちます
・よくわからない文や、エラー文が出てきたら、その文をグーグル検索しておいたほうが良いと思います
○ コメント
・コマンドを入力する真っ暗な画面より、「GithubのWindows用のソフト(GUI)」を使ったほうが楽じゃない? → 最初はコマンドラインで実行したほうが良いと感じています。理解が深まります
○ この記事の目的
・ALISのプログラマーの場合 → ALISハッカー部の共同開発に参加できる状態を作ります
・ALIS以外の一般ユーザーの場合 → プログラムの共同開発や、Githubに関することの知識を強化します
◆ 手順
1,「Git」と「Github」を理解する
・「Git」とは
「分散型バージョン管理システム」のことです。
ファイルの更新履歴などを管理します。
・バージョン管理システムとは
こちらを参照して下さい。
・「Github」とは
「Gitを用いた(基本無料で使える)Webサイト」のことです。
他の方と情報共有することができます。
(ファイルのアップローダーとして利用することもできます)
・おまけ:「GithubGist」とは
「Github」のアカウントで利用できる、プログラムのソースコードのアップローダーです。
投稿したコードを自分のサイトに共有(貼り付け)することもできます
2,「Github」に登録する
こちらから登録することができます。
……ただ、海外のサービスなので、全部英語になっています(苦笑)。
よくわからない方は、こちらを参考にしてみて下さい。
(なお、この時点では登録だけでも問題ありません。公開鍵の作成や、リポジトリの作成は不要です)
3,「Progate」で「Git」のお勉強
Gitの勉強だけなら、無料で行えます。
(会員登録は必要です)
gitに関する理解が充分でないなら、この項は飛ばさないように。
(他のプログラミング言語を学ぶ程度で考えていると、後で痛い目を見ます)
「Progate」はスライド形式で直感的に理解できるため、「Git」に関することを事前に勉強していなくても、「Git」と「サーバー」の動き方と、「Git関連のコマンド」を「多少」知ることが可能です。
(ここでのgitの理解は、何となくでOKです)
4,Windows版の「Git」をインストールする
・ダウンロードサイト
・インストールの仕方
「インストールの仕方」は、必ず読んでおきましょう。
普通のソフトと違って、設定事項がかなりある上に、標準の設定だと望ましくないところがあるので、しっかり設定しておかないと、後で面倒なことになるかもしれません。
※ Macの場合は、「OS X」以降なら「Git」が標準で付属していたと思います
インストールが終わったら、コマンドプロンプト(cmd)を開いて、
git --version
と入力してから、Enterを押して下さい。
成功していれば、「Git」のバージョンが表示されます。
※ コマンドプロンプトの開き方がわからない人は、以下のサイトを閲覧して下さい
5,Git上の「ユーザー名(英数字、任意)」と「メールアドレス」を設定する
・説明サイト
こちらのサイトの「#03 gitの設定をしよう」が参考になるかも。
※1 「git入門 (全22回)」の他のページも、Gitの勉強に役立ちます
※2 コマンドプロンプトの場合だと、「$」の入力は不要です
入力すると、ローカル環境のGitに、入力内容が保存されます。
(「git config -l」で確認可能)
おまけ:Gitの勉強は、こちらのサイトも役立ちます
6,SSHの鍵を作成する
・SSHの説明
・作り方
・補足1:認証キーの作成において、Windowsは「Git Bash」というものを使用します
※1 「Git Bash」は「4」の項でインストールしたデータに付属しています
※2 コマンドプロンプトは使えません。「Git Bash」を使って下さい
※3 「Git Bash」はよく使うことになるかもしれないので、ショートカットを作っておいたほうが良さそうです
・補足2:なぜ「SSHの認証キー」を作るのか
これが無いと、Githubの認証が面倒だからです。
・補足3:「vim」って何?
コマンドライン上で実行されるエディタです。
使い方は、こちらのサイトにまとまっています。
※ 「i(入力モードに切り替え)」と「:wq(保存して終了)」と「Esc(選択モードへ変更)」は覚えておいたほうが良いかも
※ 「Git Bash」→「vim」の時(vimが起動している時)は、「i」と「Esc」でモードの切替、選択モードの時に「:wq + Enter」で終了です。
7,Githubでリポジトリを作成する
上記のサイトの
・リポジトリを作成する
・GitHubに公開鍵を登録する
・GitHubへのSSH接続を確認する
を行って下さい。
ちなみに、リポジトリは「フォルダ」のようなものです。
Githubのリポジトリは、リモートリポジトリのことであり、ネット上にある共有フォルダのようなもの、と考えることができます。
※ GitHubへのSSH接続で警告(Warning)が出る場合
こちらで対処可能。
「Warning」が出ても特に問題はありませんが、あまり好ましいと感じるなら、実行しておいたほうが良さそうです。
8,ローカルリポジトリの作成(Githubと共有できるフォルダの作成)
中身が空っぽの新規フォルダを作成するだけです。
それと、フォルダを作る場所は、日本語が含まれていないディレクトリであれば、どこでも良いと思います。
私は、
C:\Users\USERNAME\Documents\GitHub\test\local
とすることにしました。
※1 「マイドキュメント」に「GitHub」や「test」というフォルダを作成しています
※2 「USERNAME」は、任意の値です
※3 「Git Bash」では、「C:\Users\USERNAME」が標準のディレクトリです。起動した後、「echo ~」と入力することで確認することができます
そして、フォルダを作成したら、「Git Bash」上で用いるディレクトリのアドレス(+ cd コマンド)をテキストエディタに保存しておきましょう。
私の場合だと、
cd /c/Users/USERNAME/Documents/GitHub/test/local
になります。
後に「Git Bash」で、上記のコマンドを入力すると、
C:\Users\USERNAME\Documents\GitHub\test\local
に移動することができます。
※ 現在、どのディレクトリにいるのかは、「pwd」というコマンドでわかります
9,用語の理解
Gitで利用するコマンドを、なんとなく覚えておきましょうか。
(Progateのおさらいでもあります)
なお、以下の説明を一気に覚えるのは大変だと思うので、「10」の項を進める際に、この項を同時に確認しながら、少しずつ覚えていくのが良いと思います。
・「ssh github」→ 「Git Bash」を起動した後、「Github」に接続するために必要となるコマンド。「6」の項で「Host github」の「configファイル」を作成しているはずなので、このコマンドだけで「Github」に接続できます。簡単!
・「cd (ディレクトリのアドレス)」 → フォルダの移動。最初にこれをやっておかないと、任意のディレクトリではなく、「C:\Users\USERNAME」にファイルが作られてしまうので注意
・「git init」→ gitの「設定」の初期化。……保存しておいたgit系のファイルデータが消えるわけではありません。あくまで、コマンドライン上で記録されたgitの一時的な内容(「git add」とか)を消すだけですね
・「git clone」→ リモートリポジトリ(ここでは、Github)のデータを、現在のディレクトリに複製。上記の「cd (ディレクトリのアドレス)」 と組み合わせることで、指定のフォルダをローカルリポジトリにすることができます
(「git clone」を行った時点で、ローカルリポジトリに「リモートリポジトリのファイル」があることを確認できます)
・「git branch」→ ブランチ(枝)の確認。なお、ここでは「github flow」という「ワークフロー」を用います
補足:git flowとgithub flowとは?その違いは?
・「git branch (任意の名前)」→ 「任意の名前」のブランチを作成します(「ブランチを切る」といいます)。
ブランチは「開発する場所(開発チーム)」と考えることもできます。
標準は、「開発A(マスター)」となっており、そこに「git branch test1」と入力することで、「開発A(マスター)」とは別に、「開発B(test1という名前のブランチ)」を作成します。
ただ、「git branch test1」だけでは、まだ自分は「開発A(マスター)」の所属なので(「git branch」で確認可能)、下記の手法で、ブランチ(開発チーム)を変更する必要があります
・「git checkout (任意の名前)」→ ブランチの変更
「git checkout test1」と入力すれば、(「test1」というブランチが存在していれば、)「test1」のブランチ(開発チーム)に移動できます。
・「vim (ファイル名)」→ vim(エディタ)を起動して、「ファイル名」のファイルを作成する行為
余談ですが、普通のファイルを作成したいだけなら、「vim (ファイル名)」ではなく、単にGUIで(Windows上で)行うこともできます。
・「git add」→ コミット(commit)したいファイルの選択。Windowsで例えるなら、ファイルのいくつかを選択する行為
コミットって何? → 「git add」で選択したファイルを、ローカルリポジトリに複製する行為。……「Subversion」とかと違って、コミットしたからといって、「アップロード」されているわけではありません
・「git status」→ コミットする内容(+ コミットした内容)の確認。Windowsで例えるなら、選択されているファイルが何なのかを表示する行為
・「git commit -a」→ 「git add」しておいた(+ 変更があった)全てのファイルを、コミット(ローカルリポジトリに複製)
その際、「コメントは何にするのか?」を「vim」で要求されるので、#以外のところに入力しておきます。
(「#」はコメントアウトなので、その行に入力しても効果がなかったはずです)
・「git push origin (ブランチ名)」→ ブランチ名のコミットした内容を、(ここでは)GitHubのリモートリポジトリにアップロード
ただし、まだ「リモートリポジトリのファイル」が上書きされたわけではありません。別のファイルとしてアップロードされています。
・プルリクエスト(プルリク、pull request) → (gitのコマンドではなく、GitHub上で行うものですが、)別のファイルとしてアップロードしたものをリモートリポジトリのファイルに保存(上書き)して欲しい、という要求のこと
この要求が通れば(masterが許可すれば)、コミットした内容がリモートリポジトリに(masterブランチに)反映されます。
・「git pull」→ 「masterブランチ」で更新された内容を、ローカルリポジトリに保存
おまけ:gitコマンド
10,自分用のGithubのリモートリポジトリで実践
手順:(2回目以降にも対応させたいので、一旦「Git Bash」を閉じたことにします)
A,「Git Bash」を起動
B,「ssh github」を入力
C,「cd (ディレクトリのアドレス)」で、ローカルリポジトリに移動
後は、こちらのサイトを参考にして下さい。
(2回目以降の場合だと、「mkdir」というフォルダの作成コマンドは不要です)
(「clone」も同様)
・補足1;エラーについて
gitコマンドにおいて、
fatal: Not a git repository (or any of the parent directories): .git
と表示されたら、git のセットアップが行われいないことになります。
この問題は、「gitのセットアップ」を行う → 「clone」で解決できます
・補足2:Githubのリモートリポジトリにおいて、「Clone or download」が見当たらない場合
リモートリポジトリが空っぽだと、「Clone or download」は表示されません(「README.md」の作り忘れ)。
その場合は、リモートリポジトリの「Code」のページに移動して、「Https」から「SSH」にボタンを変更した後、中央辺りに書かれている、
git@github.com:(githubのユーザー名)/(リモートリポジトリ名).git
を使って下さい。
・補足3:ブランチ名について
今回は「好きなブランチ名」でにすることができていますが、実際のチーム開発では、指定の「ブランチ名」にする必要があります。
(プログラムの変数名の設定のようなものです。「b1」だとわかりにくいから「branch1」にして、のようなもの)
基本的な説明は以上です。
大変、お疲れ様でした。
(;´∀`)
○ おまけ1:上記の説明を一通り実行したけど、よくわからない場合
例え本番であっても、項目「9」と「10」を確認しつつ、gitのコマンド一覧を見ながら作業すれば、きっとおそらく多分、なんとかなります。
○ おまけ2:
手法を一通り覚えたら、
デスクトップ版を使ってみるのも良さそうです。
○ お礼
当記事は、ALISハッカー部の「ひらいくん」のアドバイスの元で作成されています。
「ひらいくん」に感謝です。
◆ 「ゆうき」のツイッター