# はじめてのGithub
このページでは、Githubで作業する際に使用するコマンドや作業を、実際のリポジトリの操作、コマンドを通して実践的に学ぶことができます。
このドキュメントもGithubで管理、運用されています。
もし、分かりにくい点や誤字などを見つけた場合は、このフローに従って実際に修正依頼を出してみるのも良いでしょう。
# フォーク
共同開発をする時に、共同のリポジトリに対して、直接変更を加えることは時に賢明ではないでしょう。
そこで一旦、共同のリポジトリを一旦フォーク(自分のリポジトリとして、コピーしたものを持ってくること)を行います。
今回は、テスト用のドキュメントが保存されているリポジトリに対して行ってみましょう。
こちらにアクセスして、右上に表示されている Fork ボタンを押すと、 自分のユーザー名/github-test という名前のリポジトリが作成されたことが分かるでしょう。
# クローン
クローンとは、リポジトリの内容を自分のPC上にダウンロードすることです。
以下のコマンドを実行することで、リポジトリの内容をクローンすることが出来ます。
先程フォークしたリポジトリ(自分のユーザー名/github-test)にアクセスし、 clone or download と書かれた緑色のボタンを押してみましょう。
すると、URLが表示されると思うのでコピーして以下のように実行します。
$ git clone https://github.com/{{自分のユーザー名}}/github-test.git
すると、フォルダーの中に今クローンしてきた内容が入っているのが確認できるでしょう。
# エディタで開く
クローンしてきたフォルダをエディターで開いてみましょう。
手順通りにすすめていくと、~/github-test という場所に保存されているので、自分の使用しているエディターを使って開いてみましょう。
# リモートの追加
続いて、リモートリポジトリを追加してみましょう!
共同開発するときは、リモートリポジトリが2つ存在した状態になります。
1つ目が、共同で利用しているリポジトリ
2つ目が、フォークしてきた自分のリポジトリ
です。
以下のコマンドで、今のリモートの状態を確認してみましょう。
$ git remote -v
origin https://github.com/{{自分のユーザー名}}/github-test.git (fetch)
origin https://github.com/{{自分のユーザー名}}/github-test.git (push)
このように表示されると思います。
今の状態では、自分のフォークしてきたリポジトリが origin という名前で紐付けられているよ!というメッセージが返ってきています。
TIP
フォークしてきたリポジトリの名前を origin、共同で利用しているリポジトリを upstream と名付けることが慣習になっています
そこで、共同で使用しているリポジトリを upstream という名前で登録してみましょう。
$ git remote add upstream https://github.com/DU-Scholar/github-test.git
これでもう一度リモートの状態を確認してみましょう。
$ git remote -v
origin https://github.com/{{自分のユーザー名}}/github-test.git (fetch)
origin https://github.com/{{自分のユーザー名}}/github-test.git (push)
upstream https://github.com/DU-Scholar/github-test.git (fetch)
upstream https://github.com/DU-Scholar/github-test.git (push)
こうなっていればリモートの設定は完了です。
# ブランチの確認
続いてはブランチの確認をしてみましょう。
以下のコマンドでブランチの状況を確認することが出来ます。
$ git branch
* master
開発する上で、masterブランチに対して直接変更を加えるのは賢明ではありません。
masterブランチは常にエラーがなく、正しく動作する状態でおいておくべきだからです。
そこで、変更を加える前にブランチを切って起きましょう!
$ git checkout -b {{好きな名前}}
これで、masterブランチから、好きな名前のブランチを新しく作成して切り替えることができます。
TIP
ブランチ名は何を付けても良いのですが、分かりやすいようにissue名をつけると分かりやすくなります。
念のため、ブランチの状況を確認しておきましょう。
$ git branch
master
* 新しく作ったブランチ
*マークは現在自分のいるブランチを示しています。
WARNING
ブランチを切り直すときは、必ず一度masterにブランチを切り替え(checkout)してから切りましょう。
# ファイルを変更してみよう
とりあえず、テスト用のファイルなのでどこを変更しても良いのですが、 README.md というファイルの文字を変更してみましょう。
# Pull Request(プルリク)の作成
共同で開発を行う多くの場合、プルリクベースでの開発になるでしょう。
プルリクを出すことで、コードのレビューを管理者に受けてから反映することができるので、エラーがあるままマージされたり、未完成のままでタスクが完了したことになるというミスも減るでしょう。
まず、変更、追加を行ったファイルをgitに追加します。
# 新しく追加したファイルはすべてaddする
$ git add {{変更したファイル名}}
TIP
git add する対象は、 git status コマンドで確認することができます。
次に変更点をコミットしましょう。 以下のコマンドで、メッセージを付けてコミットをすることが出来ます。
$ git commit -m "テストです"
TIP
コミットメッセージは何を変更したのか分かりやすく書きましょう。
コミットした後、自分のフォークしてきたリポジトリにプッシュしましょう。以下のコマンドでプッシュすることが出来ます。
$ git push origin {{作業しいていたブランチ名}}
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 388 bytes | 388.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/{{ユーザー名}}/github-test.git
c5abe07..f38a0c4 master -> master
このように表示されれば成功です。
その後、こちらにアクセスし、 Conpare & pull request という緑色のボタンを押して、
タイトルとどのような内容を変更したのかを書き、 create pull request ボタンでプルリクを作ることが出来ます。
プロジェクトに参加〜プルリクを作成までの流れは以上となります 🎉
# 2度目以降の作業
自分が作業していなかった間に他の人が変更を加えていることが多いでしょう。
変更を取得して、自分の作業へ入るまでのフローを記述していきます。
# 差分の取得・更新
共同開発用のリポジトリから変更内容を取得して反映させましょう。
その前に、忘れてはいけないのは、自分がローカルリポジトリの master ブランチに移動しておくことです。
ブランチの移動は、以下のコマンドで行うことが出来ます。
$ git checkout master
TIP
ブランチを移動する時は、 checkout コマンド、新しくブランチを作る時は checkout -b とします。
間違えないようにしましょう。
変更を取得して反映させるのは、 pull でした。以下のコマンドを実行してみましょう。
$ git pull upstream master
このコマンドを実行すると、upstream(共同で利用するリポジトリ)という名前のリポジトリのmasterブランチから差分を取ってきて、ファイル内容を更新をする という意味のコマンドです。
あとは、以下のコマンドで新しいブランチを作成して、作業を行うことができます。
$ git checkout -b {{作成したいブランチ名}}
これ以降はPull Request(プルリク)の作成に戻ります。