GitHubを使いこなそう2016.6.26Tweetはじめにオープンソースの世界では何千人、何万人という人々が同時にソフトウェアの開発を行っています。そのコードレビューやバージョン管理をオンライン上で可能としているのが「GitHub」です。今日さまざまな企業がオープンソースの世界に参入し、GitHubを使ってコミュニケーションを取りながら開発を進めています。今回はオープンソースの世界では避けては通れないGitHubと、それを操作するためのツール「git」について、その使い方をご紹介いたします。Gitを参考にさせて頂きました。用語集それでは、まずGithubとgitを理解する前に、知っておかなければならない用語について簡単に紹介します。実際に作業をしているディレクトリインデックス(ステージング)ワークツリーとリポジトリの間にあり、ワークツリーにあるファイルを登録し、コミットすることでリポジトリに反映されます図解してみましょう続いて、図を用いて紹介していきます。gitはリモートリポジトリを中心に構成されます。Subversionのような集中型バージョン管理の場合、リモートリポジトリとディレクトリが直接つながっています。サーバー環境に接続できなければ、最新の情報を取得することができません。一方で、gitはその間にローカルリポジトリを挟むことでリモートリポジトリの情報をローカルにコピーして、サーバーに接続することなく作業ができます。コミットについてコミットすることで誰がいつ更新したかが分かるようになります。-mのオプションをつけることでメッセージを残すことが出来ます。インデックスについてディレクトリ(ワークツリー)からファイルをコミットする前にインデックスに登録しなければコミットできません。インデックスを挟むことで他のファイルのコミットを防げます。この行為のことをステージングと呼びます。ブランチについて最初に作られるブランチは基本的に名前を変更しなければMasterと言う名前でつくられます。このブランチは統合ブランチとなります。作業をしている上で様々な用途に合わせてバージョン管理をしていきたいこともあります。そこでトッピングブランチという新たにブランチを作ることが出来ます。マージについてマージをすることで、トッピングブランチを統合ブランチに統合することができます。統合したことでトッピングブランチが消えることはないので安心してください。gitの初期設定それでは、gitを使った実用の旅にお付き合いください。事前準備としてLinuxにgitをインストールしておきます。git次にgitの初期設定を行ないます。ユーザ名とメールアドレスを登録しておきましょう。Ironman@adoc.co.jpこの情報はコミットのログを観覧するときに表示される情報です。次はgitの出力をカラーリングします。auto以上で初期設定は終わりです。実際にgitを使用する前にコマンドを確認しておきましょう。ブランチを統合する以上が、gitの基本的なコマンドとなっています。ローカルリポジトリ作成から~コミットまでそれでは実際にgitを使っていきましょう。ローカルリポジトリとするためのディレクトリを作成してそこに入ります。octoboxこのディレクトリにローカルリポジトリを作成します。init以上でローカルリポジトリを作成できました。この作業を一括に行なうこともできます。/home/ubuntu/octocat/.git/それでは、現在のステータスを確認しましょう。track)どのディレクトリもコミットされていないことがわかりますね。それでは、ここに新しいファイルを作成してみましょう。octocat.txtもう一度ステータスを確認してみましょう。track)トラックされていないファイルがあると表示されていますね。これによりインデックスに登録されます。committedに変わり、コミットする準備ができましたと表示されているのが分かります。新しいファイルoctocat.txtが見えます。今はステージングエリアにあります。コミットしてみましょう。octocat.txtそれではログを見てみましょう。メッセージが表示されます。これでローカルリポジトリの作成は完了です。次にリモートリポジトリを作成します。そこで今回はGithubのサービスを利用します。このサイトにまずアカウントを作ります。アカウントを作成したら、次にリモートリポジトリを作ります。repositroyで選択し、リモートリポジトリの作成に取り掛かります。repositoryを選択しましょう。したらリモートリポジトリが完成した画面が表示されます。ここでHTTPのURLをメモ帳に保存します。このURLがリモートリポジトリが作成された場所です。プッシュするときアカウント名とパスワードも聞かれますので、それも同様にメモ帳に保存しておきましょう。PushとPullとCloneローカルリポジトリとリモートリポジトリが出来たのでプッシュとプルをしていきましょう。プッシュやプルする前にまずリモートアドレスを記録させておきます。<URL>これを記録させておけば毎回アドレスを記入する必要がなくなります。それでは、まずローカルリポジトリ内のディレクトリをリモートにプッシュする所からはじめます。origin.今回はリモートアドレスをoriginと記録させ、ブランチにはmasterと入力しました。この-uのオプションをつけることで毎回ブランチ名を入力する必要がなくなります。Githubのアカウント名とパスワードも聞かれますの注意してくださいね。プルするときも同じ要領でおこないます。origin以上のコマンドでリモートリポジトリからディレクトリをローカルリポジトリに落とすことができます。それでは、次にクローンを実行してみましょう。クローンは新たなユーザーが既存のリモートリポジトリからディレクトリを引き出したいときに使用します。done.これでリモートリポジトリからローカルリポジトリへのクローンが完成しましたね。新規リポジトリの名前のときに存在しないディレクトリ名をいれたら、そのディレクトリが自動的に作成されます。ブランチとマージここまででgitの全体構造が組み立てれるようになったので、ブランチを作成していきます。ブランチはコミットの履歴と考えてもらえばわかりやすいでしょう。"初コミット"以上のコマンドを入力し、準備してください。それでは実際にブランチを作成していきます。今回作成するブランチはトッピングブランチです。name>これでトッピングブランチが作成されました。今回はブランチ名をoctocatにしました。それでは、実際に作成できたか確認しましょう。branch#*master#octocat二つのブランチがあることが確認できましたね。ここで気をつけなければならないのは、ブランチの後にトッピングブランチ名をつけるかつけないかでコマンドが変わります。名前をつけた場合は、トッピングブランチを作成します。つけなかった場合は、ローカルリポジトリ内にあるブランチのすべてを列挙します。*は自分がいるブランチの現在地です。それではブランチを切り替えていきます。'ocotcat'これで切り替わりました。この状態でブランチを列挙すると*がoctocatのほうに移動しています。#master#*octocatトッピングブランチ作成から切り替えまで一括ですることもできます。'octocat2'それではブランチを列挙して確認してみます。branch#master#octocat#*octocat2これで一括でブランチ作成と切り替えを行なうことができます。それでは今度はoctocat2を統合ブランチにマージしていきます。前準備としてoctocat2のブランチ内でoctocat.txtを編集し、一文目に「マージするよ」と記入してください。その後、テキストをステージングしコミットしでください。念のため、masterのほうに切り替えてテキスト内を確認すると「マージするよ」は記入されていません。それではマージしていきます。insertion(+)これで統合ブランチのmasterに切り替えテキスト内を確認するとトッピングブランチ(octocat2)で書いた内容が反映されています。おわりに今回はバージョン管理システムのgitの使用方法とウェブサービス「GitHub」について紹介しました。一つのディレクトリに対して様々な用途で編集できることは素晴らしいことですね。gitの使い方をマスターしてオープンソースの世界に飛び込みましょう!今回も最後までお付き合いを頂き、ありがとうございました。9新年あけましておめでとうございます。3何故、それが読まれたか~上半期・エンジニアブログ閲覧数ランキング~2013.6.12「何」を知っているかではなく、「誰」が知っているか2013.5.28戦後、人間尊重の信念を貫きとおした1人の経営者がいた!2013.5.24健康な心が、健康な会社を作る。2iPhone5発売!LTE普及には切実な背景が...2012.9.12「だれを選ぶか」をまず決めて、その後に「何をすべきか」を決める。2012.8.17会社を回すのに大事な3つの感覚。7プロジェクトはたいてい失敗に終わるんです。6月刊『ニュートップリーダー』に記事掲載&"想いを語る夕べ"体験会やります!2012.1.31【第4回】想いを語る夕べ~フォロー編~2012.1.23タニタの社員食堂は"トップの想い"から生まれた!?2012.1.13【第3回】想いを語る夕べ~実施編~2011.12.27オフィスで簡単エクササイズ!2011.12.13【第2回】想いを語る夕べ~準備編~2011.11.24【第1回】想いを語る夕べ~誕生編~2011.11.17「責任感だけで仕事をしていた・・・。