Gitの基礎を理解しよう

 Gitという言葉は、愚かで不快な人を意味するイギリス英語のスラングに由来しています。

今日話したいのはそんなことじゃない!

 卒業制作でチーム製作をする時などにとても役に立つものです!便利で役に立つ一方少し難しく、時間をかけて慣れていく必要があるともいえるでしょう。

ただ安心してください!この記事を読んで一緒に学びましょう!

 SUNABACOプログラミングスクールでもGit、Githubについても学びますが、ここでつまづく生徒さんをよく見ます…

 ということで、この記事では、Gitとは何か、なぜGitが必要なのかを砕いていきます

Git上級者向けの記事▼

あなたがまだ知らないGitの3つの便利なコマンド

Gitとはなにか

 Gitは、オープンソースの分散バージョン管理システムです。

うーんあまりまだよくわからないですね

 Gitの目的は、さまざまなユーザーからの操作によって時間の経過とともに変化するプロジェクトとファイルを追跡することです。

なるほど…

 Gitは、プロジェクトの進行状況に関する情報をリポジトリに保存します。リポジトリには、プロジェクトへのコミット、またはヘッドと呼ばれるコミットへの一連の参照があります。この情報はすべて、プロジェクトと同じフォルダーの.gitというサブフォルダーに保存され、ほとんどのシステムでは、デフォルトでほとんど非表示になっています。

 Gitは、1つのプロジェクトで数人が行った変更を追跡し、さまざまな部分で作業したコードを1つのプロジェクトにマージします

 なぜこのようなことが必要なのでしょうか。

 このようにすると、誰かがバグが発生したときに、commitを実行することで、バグが発生しているコードを追跡できます。変更に問題がなければ、デフォルトでmaster(あるいはmain)と呼ばれるメインブランチに変更をcommitしていきます。

 次に、コードをGitHubまたはBitBucketにアップロードして、ユーザーがコードを表示、pull、またはpushできるようにします。

 複数人で作業していると、進捗が異なっていきますよね。Aさんはボタン機能をつけて、Bさんはチャット機能を作っていた場合、最終的にはそれらを統合する必要があります。また、バグが発生しているのかどうなのか、途中のところに戻りたいときとか、さまざまなケースが開発中には考えられます。そういったことを解決できるのがGitという感じです。

やってみよう

 Gitを使用するには、Gitをマシンにダウンロードする必要があります。 https://git-scm.com/にアクセスして、自分の環境に最も適合したバージョンをダウンロードしてください。
 Gitのインストール中に一つやっていただきたいのが、通常のコンソールウィンドウでもGitを実行することを選択してください! これにより、gitコマンドを使用してコマンドプロンプトでGitを実行できるようになります。
 インストールが完了したら、Git bashを開き、プロジェクトをテストして作業フォルダーを作成「mkdir」します。 作業フォルダに「cd」で移動したら、ファイルを作成し、そこに適当なコードを記載しましょう。 例えば、test.pyというファイルに、

print("hogehoge")

gitレポジトリの初期化

 すべての変更はリポジトリで追跡されるのですが、gitを使用するためにまず一番最初に行うことがあります。gitリポジトリの初期化です。作ったフォルダ内で、次のコマンドを実行してください。

git init

 そうすると非表示のgitフォルダーが作成されます。非表示なんで見えないんですが、macなら

ls -a

 で確認できると思います。

変更のコミット

 新しいコードを追加したり、ファイルに変更を加えたりしていったとき、この機能をいつ、誰が追加したかを追跡するには、インデックスに変更を追加する必要があります。新しい行を追加したら、まずインデックスに変更をaddします。これをステージングと呼びますが、インデックスは、コードの増分行をメインプロジェクトにまとめて追加する前に、どこまで進んだかを追跡するプラットフォームのようなものと考えてください。やり方は、

git add test.py

 あるいは、

git add .

 git add . は変更があったらファイルを全てステージングできます。複数のファイルを変更した場合はこちらで良いでしょう。

git status

 をすると、addできているかどうか確認できます。

 緑のフォントで書かれている場合、それらのファイルは正常にaddされたファイルです。一方で上の画像のように赤でマークされているものは、変更があったらがまだステージに追加されていないよ、ということになります。 なので、問題がないのであれば、addしてcommitしてください。

 変更をcommitするには、次のコマンドを使用します。

git commit -m "This is the initial commit"

 -m " "の部分は、””内に続くものがコミットメッセージに当たります。これは、将来の自分や他の開発者に、そのコミットで追加された内容をメモっておくような感じです。

そのコミットで自分が何をしたか誰にでも分かるようなものを入力しましょう!

 例えば、git commit-m "Added login page"とした場合は、loginページを作りましたよ、みたいな。

ログを振り返る

 特定のプロジェクトに取り組んでから数か月が経ったとしましょう。Gitを使用してその進捗状況を追跡したい場合、git logというコマンドを使うとコミット履歴を表示し、履歴を確認できます。

Githubにアップロードする

 オンラインで他のメンバーもアクセスできるようにコードを共有するには、コードをGitHubまたはBitBucketにアップロードします。

 Githubのアカウントを作ったら、githubのページにいって、右上に、

 New repositoryというのがあるので、そちらをクリック!

 リポジトリに名前と説明を付けます。説明は、なんのプロジェクトなのかですね。なんのアプリなのかとか色々です。後に変更可能なので考えすぎずに…

 プロジェクトのホームディレクトリのすぐ下に表示される.READMEファイルを使用してプロジェクトを初期化することができます。.readmeファイルには、プロジェクト、プロジェクトの使用方法、進行状況、およびその他の情報に関する詳細を記入することができます。

 ローカルに今作ったリモートリポジトリをリンクさせるには、次のコマンドを実行してください。

git remote add origin https://github.com/自分のアカウント名/リポジトリの名前.git

コードをリポジトリにpushするには、次のコマンドを使用します。

git push -u origin master

 あるいは、

git push -u origin main

 masterかmainかは、自分の使っているブランチ名に合わせてください。

 ちなみに、ブランチを確認する方法は、

git branch

 です。

 これにより、アプリがマスターブランチあるいはメインブランチにpushされます。

 別のマシンからコードをpullするには、空のgitリポジトリを初期化(git init)してから、次のコマンドを使用してリポジトリをpullします。

git pull https://github.com/自分のアカウント名/リポジトリの名前.git

ブランチ

ブランチも少し混乱してしまう昨日でもあります…

 大規模なプロジェクトに取り組んでいて、実験的な機能を追加したいとします。それが機能するか、受け入れられるかわからない場合は、新しいブランチを作成してそのブランチで作業することにより、メインツリーから分岐することができます。

作業をするときはブランチ上で作業をしましょう!

 ブランチで作業をする方が良い理由
masterとかmainは基本的には最新のリリース状態にしておきたいです。それにもかかわらず、機能を追加した場合、バグがあってリリース状態のものが壊れたりしたら困るじゃないですか。だからブランチ上でテストと開発をしながら、問題がなければmasterやmainを更新していくという流れです。

 ブランチはいくつでも作成できます。ブランチを作成するには、次のコマンドを使用します。

git branch ブランチの名前

 プロジェクトにあるブランチのリストを表示するには、次のコマンドを使用します。

git branch --list

 緑でアスタリスクが付いているブランチは、現在作業中のブランチです。ブランチを切り替えたり、コード変更のさまざまなレイヤーをコミットしたり、履歴をログに記録したりできます。 ブランチを切り替えるには、次のコマンドを使用します。

git checkout 切り替えたいブランチ名

まとめ

 Gitに関するこの基本的な知識があれば、Gitを使用して、開発者のチームとコードを共有したり、変更を追跡したり、プロジェクトに変更をコミットしたり、寄稿者を承認したり、ブランチを使用して実験的な機能を作成したり、コードをmergeしたり、テンプレートのコードをpullしたりできます。これらは、開発者の日常生活で非常に役立つ機能です。

慣れれば必ずみなさんもできるようになります!!

 わからないければいつでも質問をどうぞ!

 SUNABACOプログラミングスクールでもGit, Githubを教えています。

References

https://medium.com/@onejohi/git-understanding-the-basics-ba004a20dacc