もりけん塾に入るとGitとGithubを使って、課題の提出を行います。この記事では、最初に勉強したGitとGithubついて説明していきます。
GitとGitHubについて
Gitはソースコードなどの追加や変更履歴を管理するためのバージョン管理システムです。いつどこで何を誰が行なったのか履歴を残すことができます。
GitHubは、クラウド上でGitを使えるようにするためのWebサービスです。Gitを使って複数の人で共同で開発を行うときにとても便利です。GitHubはマイクロソフト傘下のGitHub社によって運営・保守されています。
GitHubを無料プランで利用する場合、リポジトリにアップしたデータは、全世界に公開されます。非公開にしたい場合は、有料プランの契約が必要です。
リポジトリとは
リポジトリとは、プロジェクトの変更履歴をしまっておく場所です。英語で「貯蔵庫」を意味します。GitHubに作ったリポジトリを自分のパソコンにクローン(複製)して、ローカルのリポジトリを作ります。
Bitbucketついて
Gitをクラウド上で管理するためのWebサービスは他にもあり、私の場合、普段のお仕事ではAtlassian社が提供しているBitbucketを利用しています。Atlassianは、オーストラリアのシドニーで発足したシフトウェア会社で、日本にも拠点があります。
Bitbucketは、メンバーが5人までなら、リポジトリを無料で非公開にすることもできます。他の機能はは、GitHubとほとんど同じです。Githubよりも、画面がとてもシンプルです。
コードのレビューについて
GitHubやBitbucketには、コードをレビューする機能があり、他の人からコメントをもらうことができます。コードを書く人をレビューイ、レビューしてくれる方達をレビュアーと呼びます。
もりけん塾では、Githubにアップして課題を提出、もりけん先生と塾生の皆さんにコードレビューをしてもらいます。他の塾生さんたちから実装方法について、アドバイスして頂いたり、質問をすることができるので、とても勉強になります。
データをGithubにpushするには
GitHubのリポジトリに、データをアップロードすることをpushといいます。GitHubにpushするためには、Githubのアカウントが必要です。
- GitHubのアカウントをこちらから作ります。
- アカウントを作ったら、先にリポジトリを作ります。
- リポジトリを作ったら、ローカルにクローンします。
- クローンしたら、リポジトリと同じ名前のフォルダができるので、その中に自分のローカルのファイルを入れて行きます。
- GitHubにPushします。
ブランチというのは、ひとつのソースコードを途中で枝分かれさせるための機能です。開発現場では、本番用のブランチ、リリース用ブランチ、開発用ブランチ、機能追加用ブランチ、バグの修正用ブランチなど、目的に合わせてブランチを分けることが一般的のようです。
ブランチのワークフローについては、下記のサイトが詳しいので、おすすめです。
GitHubへPushするまでの手順
GitHubでリポジトリを作る
それでは、まずGitHubでリポジトリを作っていきます。GitHubにログインしたら、リポジトリを作ります。
※GitHubでは、全てのデータが全世界に公開されますので個人情報を載せる際は、気をつけてください。
リモートリポジトリをクローンする
リポジトリができたら、ローカルにリモートリポジトリをクローンして、ローカルリポジトリを作ります。
ローカルでブランチをきる
ローカルリポジトリができたら、必要なブランチをつくります。
コードやデータ用意する
クローンしてできたフォルダの中に、ファイルを作って入れていきます。
GitHubにPushする
GitHubにPushします。
GitHubにpushした後の流れ
GitHubにpushしたあとは、プルリクエストをします。プルリクエストをすると、コードレビューができるようになります。コードレビューをしてもらい修正が必要なら、この段階で修正します。
コードに問題がなければ、Approve(承認)してもらい、mainブランチ(本番用のブランチ)に現在のブランチを合わせます。ブランチを統合することを、マージと言います。
マージが終わったブランチは、削除するのが一般的と教えて頂きました。 GitHubには、mainブランチにマージが終わったブランチを自動で削除できる機能があるので、設定しておくとリモートブランチをいちいち削除する手間が減ります。ローカルブランチの方は、リモートが削除されていても、残るので私はいつも手動で削除してます。
次の機能を追加する時は、また新しいブランチを作り同じ作業をします。
この記事を書くときに参考にしたサイト:
https://kinsta.com/jp/knowledgebase/git-vs-github/
https://www.atlassian.com/ja/git/tutorials/learn-git-with-bitbucket-cloud