GitとGitHub
Git
ソースコードなどのファイルやフォルダの変更履歴を記録・追跡するためのバージョン管理システム。
Gitでアプリケーションを管理すると、下図のようにそれぞれの開発段階でのアプリケーションの内容をセーブポイントのように記録し、時系列に沿って管理してくれる。このセーブポイントは遡ることもできる。
GitHub
Gitの仕組みを利用し、簡単に複数人での開発ができるようにしてくれるWebサービス。また、世界中の人々が自分の作品(プログラムコードやデザインデータなど)を保存、公開している。
近年、DropboxやGoogle Driveなどのクラウドサービスでファイル共有やファイルの同時編集は簡単に行えるようになりました。GitHubもこのクラウドサービスのような役割を果たしている。とくにGitHubには、途中まで実装したプログラムのコードを簡単に共有でき、コメントをもらうことができる機能もある。
GitとGitHubの違い
Gitは「ファイルの更新履歴を記録する仕組み」であり、GitHubは「Gitの仕組みを使ってエンジニアを支援するWebサービス」。
リポジトリ
リポジトリとは、Gitの管理下にあるファイルやディレクトリの変更履歴を保管しておく箱のようなもの。管理したいアプリケーションのディレクトリを、バージョン管理の範囲として指定する。
ローカルリポジトリ
ローカルリポジトリとは、自分のPC上(ローカル環境)に置くリポジトリのこと。作成したリポジトリは自分のパソコンの中にあるため、ファイルやディレクトリを変更、修正した際は好きなタイミングでこれを記録できる。
リモートリポジトリ
リモートリポジトリとは、外部サーバー上に置くリポジトリのこと。作成した箱が、インターネットを介した別の場所にも作られるイメージ。リモートリポジトリを直接変更修正することはなく、ローカルリポジトリの変更修正を同期して、反映させることで更新する。
リモートリポジトリは外部のサーバー上にあるので、他の人に自分の作成したコードを共有できたり、チーム開発をしやすくしたりできる。複数人での開発ではリモートリポジトリを活用する。
commit
ファイルやディレクトリの変更修正を、リポジトリに記録すること。
commitをすることで、変更修正の時系列の管理が行いやすくなり、変更修正を遡ることもできる。
コミットメッセージ
ファイルの変更修正の内容をわかりやすくするための記述。コミットメッセージを書くことによって、変更修正したファイルの中身を確認しなくても、「どのような変更修正なのか」がすぐにわかる。
push
ローカルリポジトリでのコミットをリモートリポジトリに反映できる。
ブランチ
ブランチとは、リポジトリで管理しているファイルやディレクトリの変更の流れ、すなわちcommitの連なり。リポジトリは必ずブランチを持っている。このブランチは分岐ができる。本流を「masterブランチ」、分岐したブランチを「トピックブランチ」と呼びます。
プルリクエスト
ブランチでのコミット履歴を残すと共に、各コミットにおける変更修正にコメントをつけることができるGitHubの機能のこと。、1つのブランチでの作業について、コードを確認しつつコミュニケーションが取れる掲示板のようなものがプルリクエスト。
①プルリクエストの詳細には、What(何を)とWhy(なぜ)を書く。What(どのような実装をしているのか)とWhy(なぜこの実装が必要なのか)を書くことで、このブランチは何を実装していて、なぜその実装を行ったのかが他の人に伝えることができる。
コードレビュー
コードレビューとは、複数人での開発において、コードの記述内容に問題がないか、他の開発メンバー等が確認をすること。また、コードレビューを担当する人をレビュアーと呼ぶ。
LGTM
LGTMとは、Looks good to meの略で、「コードに問題はないと思うよ!」という意味。
merge
mergeは統合するという意味です。機能実装のために作成したブランチを、リモートリポジトリ上のmasterブランチに反映する作業のこと。
pull
リモートリポジトリの変更をローカルリポジトリに取り込む操作のこと。リモートリポジトリのmasterブランチはマージ後の情報になっている。しかし、ローカルリポジトリのmasterブランチはマージ前の情報のままなので、次のブランチを作成する前にpullをして情報を反映させる必要がある。
git cloneコマンド
リモートリポジトリを自分のパソコンにダウンロードするコマンド。リモートリポジトリのURLに.gitを加えた文字列指定することで、ローカルリポジトリとして取り込むことができます。ダウンロードをするようなイメージ。
Discussion