前回はデータの保管場所であるリポジトリの作り方に焦点を当てた記事を書きました。今回の記事は前回作ったリポジトリを実際に使ってみることでGitHubの使い方に慣れてもらう記事になります。そのため前回の記事を読んでいない方は先にこちらのリポジトリ【GitHub講座 #2】の記事を読むことをお勧めします。(そんなに分量もないので是非)
今回は前回よりも学ぶことが多い上に作業をする部分もやや多くなるので、少しボリュームが増えています(^ ^)
クローン
最初にクローン(clone)から初めていきます。クローンというのはリモートにあるリポジトリをローカルにコピーする操作のことを指します。今回はGitHub上にあるリポジトリpracticeをローカル(自分のPC)にコピーします。クローンをすることによってGitHub上(リモート)にあるデータを直接改変せずに手元の環境で開発を進められるので、メンテナンス等で利用者が使えなくなる時間が格段に減ります!(素晴らしい!!)
クローンの仕方はSourcetreeから操作する方法、コマンドを使う方法やGitHubから直接操作する方法などがあります。ここではSourcetreeをインストールしていることを前提にSourcetree側からクローンする方法を紹介します。その他の2通りに関してはコラムで扱うことにします。
まず最初にSourcetreeを起動します。そうすると以下のようなウィンドウが表示されると思います。
このウィンドウの左上にある『リモート』を選択してください。
第1回の記事でGitHubアカウントを関連づけを行っている人は、以下のようにpracticeという名前のリポジトリが表示されます(自分は色々ありますが気にしないでください)。表示されない人はGitHubアカウントの設定をしてくださいね。
クローンしたいリポジトリのところにある『クローン』ボタンをクリックし、ローカル(自分のPC)にコピーしてください。
無事にクローンができると以下のようなウィンドウが表示され、Sourcetreeのローカルのところにpracticeが表示されます。
このようにSourcetreeを使えば直感的な操作だけでクローンができます!!(最高ですね)
コミット
ローカル環境でリポジトリをいじれるようになったところで、コミット(commit)も一緒に勉強しましょう!!コミットというのはクローンで持ってきたファイルに対して操作を行った後に変更点をローカルのリポジトリに適用するための操作になります。
今回はクローンで持ってきたpracticeにファイルを追加しコミットしてみます。
まずは適当にファイルを作ってpracticeフォルダの中に入れます(私はterms.txtというファイルを作って入れておきました)。
この状態でSourcetreeを見ると画面の表示が変わっていると思います(変わっていない人はSourcetreeを一旦閉じて開き直して、『ローカル > practiceをダブルクリック』してください)。
追加したファイルを選択した状態にすると、右側にファイルの中身が表示されます。今回はファイル自体を新規に追加したので差分が表示されませんが、2回目以降のコミットでは差分をみることができます。
ファイルの追加と一緒にREADME.mdも更新しておいたので、そちらで差分をみてもらいましょう!!
右半分のエリアに緑色の行と赤色の行が見えます。これらの色は、赤色の行が削除や変更された行を表していて、緑色の行が追加や修正を表しています。
このようにコミットをする前に差分を見て確認などができるわけです。今回は特に確認することもないので早速コミットを行って変更を適用させましょう。
リポジトリに適用させたい全てのファイルにチェックマークを入れ、左上にある『コミット』を押します。
そうすると以下のように、コミット時のコメントを入力する欄が出てきます。
コミット時のコメントは簡潔に一目でわかるものが望ましいですが、ここでは適当にコメントをつけておく程度でいいでしょう。コメントを入力し終えたら右下にある『コミット』をクリックします。
このようなメッセージが表示された人は『OK』を押してください。
これでコミットができましたね。コミットを積み重ねていくことで開発を進めていくのが基本になります!
コミットはローカルにあるリポジトリ内でのバックアップに過ぎません。なのでリモートのリポジトリに変更部分を適用するためには、プッシュ(push)を行う必要があります。
コミットとはローカルで作業をした際に生じた変更点をローカルのリポジトリに適用させる処理のことを指す。リモートのリポジトリに変更を適用させるためにはプッシュを行う必要がある。またコミットを行う際にコメントをつけたり、差分をみたりできるので変更点や修正点がわかりやすい。
クローンを行う方法として、Sourcetreeを使う方法の他にもGitHubを操作する方法とコマンドライン操作をする方法があることを述べました。それについてコラムで触れておきます。
1つ目のGitHub上からそのままクローンする方法は簡単でリポジトリページで緑色のボタンで表示されている『Clone or Download』からできます。
2つ目のコマンドライン操作は以下のコマンドで実行できます。
git clone https://github.com/[ユーザー名]/[リポジトリ名].git
gitの後ろにやりたいことをくっつければ大体実行できるのでぶっちゃけなんとかなります。\\\\ ٩( ‘ω’ )و //// (cloneとかstatusとかaddとかcommitとかlogとかをくっつけるだけ……!)
プッシュ
それでは実際にプッシュをしてGitHub上のリポジトリにも変更点を反映させましょう!
上にある『プッシュ』を押しそのまま『OK』を押します。
ここの画面はひとまずおいておきます。次回か次々回の記事で触れるので今は無視しておきましょう。
プッシュが終わったのでGitHub側からリポジトリを見てみましょう。
無事に反映されていますね!これで自分のリポジトリを操作するために必要な一通りの基本操作を勉強しました。最後にプル(pull)について勉強して記事を締めくくりましょう!
プル
複数人で開発を進めている際に、そこそこの頻度で『プッシュができない』状態が発生します。これはどういう原理で起こるのかを説明していきます。
自分がクローンをしてローカルに持ってきた時から、ローカルのリポジトリで開発をしてプッシュをしようとするまでの間に、他の開発メンバーさんがリモートにあるリポジトリに対してプッシュを行ったとします。当然プッシュが行われたのでリモートにあるリポジトリは自分がクローンで持ってきた時のバージョンではなくなっています。
このような状況になると、自分の開発した部分の変更をプッシュでリモートリポジトリに反映させることができません。一度リモートリポジトリと同じ状態にしてあげる必要があります。この時に行う操作がプルになります。
プルの練習を兼ねて実際にプッシュができない状況を体験してみましょう!
今回だけGitHub上で編集作業をします(実際に開発をするときはちょっとした変更をする時以外はあまり使わない方が良いです……)。
最初にGitHubの該当するリポジトリ(本記事ではpracticeという名前のリポジトリ)のページを開きます。
この画面の右上にある『Create new file』をクリックしてください。これを使って新しくファイルを作り、リポジトリに変更を加えます。
以下の画面で新しく作るファイルの名前や内容を操作できます。
適当に何か書いておきましょう。私は次の記事で使うファイルをチャッカリ作っておきました(*´꒳`*)
新規ファイルの編集が終わったら下の方にスクロールしてコミットを行いましょう!今回はローカルに落とさずに(クローンせずに)直接操作しているので、コミットの内容がダイレクトにリモートに適用されます。
以下のように新しく作ったファイルが追加されていればGitHub上での作業は終了です。
ここからは『先にプルを行わないとプッシュできない』状態がどんな感じなのかを経験してもらいます。まずはSourcetreeを開いてください。開くとプルのところに数字がついているのがわかりますね。これはローカルにあるリポジトリがリモートにあるものよりも前の状態にあることを表しています。
ここではプルに気づかなかったことにしてファイルに変更を加えてみましょう。各自README.mdでもなんでもいいのでファイルの内容を少し変更してみてください。
変更するとSourcetreeの画面はこんな感じになると思います(今更だけどWindowsとかは若干UIが違うけど概ね一緒ですね、わからなければコメントで言ってくれれば加筆します)。
先ほどまでと同様の手順でコミットしてみます。
コミットをするとプッシュのところにも数字がつきましたね。それでは早速プッシュをしてみましょう!(ポチっとな)
エラーが発生しましたねー。こんな感じのエラーが出るんだなというのをみてもらったら『閉じる』を押してもらって、今度はプルをしてからプッシュをしてみましょう!!
まずはプルを行います。プルについては少し丁寧に手順を説明します。といっても直感的に操作すれば大丈夫ですね。最初に『プル』をクリックしてください。
以下のようになっていることを確認して『OK』を押してください。
上の画像のチェックボックスにマークを入れておくとプルで持ってきた変更がそのままコミットされるので手間が省けます。
プルがうまくいくと『プル』のところにあった数字がなくなり、グラフが一つにまとまりました!(マージについては次回触れるので今は気にしなくても大丈夫です)。
プルをしたので次はプッシュをしてみましょう!
今度はうまくいきましたね。GitHub側から確かめてみるとちゃんとできたか確認できます。
プルとはローカルにあるリポジトリをリモートリポジトリのバージョンに合わせる操作を指す。この操作によって古いバージョンからブランチを作って開発を進めたり、複数の人で同時に開発したりできるようになっている。
まとめ
今回の記事は、リポジトリの基本操作について勉強しました。自分ひとりで開発する際にはこれだけの知識があればリポジトリの操作はほぼほぼ大丈夫ですが、マージやフォーク、プルリクエストについて知っておいた方が良いので次回はその辺りを中心に学んでいきましょう(余裕があればoriginとかmasterとかブランチとかの説明もしたいと考えています)。
最後まで記事を見ていただきありがとうございます。また別の記事でお会いできることを祈っております。