Gitとは?
gitとは、ソースコードを始めとするファイルの変更履歴を管理するためのシステム。
変更履歴を記録するシステムのことをバージョン管理システムと言う。
フォルダに日付をつけて管理してったりすると訳わかんなくなったりするので、gitを使って管理してくのが良いみたい。
なぜGitを使うの?
ファイルの変更履歴を管理するため
何か問題があったときに過去のファイルに戻れるようにしておくため。
GitHubとは?
- gitの仕組みを利用したwebサービスのこと。
- gitの機能に対してチーム開発に便利な機能と付け加え、gitにおけるリモートリポジトリの役割も担っている。
- github上にチームで共有のプロダクト(ソースコード)を配置し、開発者はgithub上からソースコードをコピーしたり、ソースコードをgithub上のリポジトリに反映させることが出来る
世界中にコードを公開することでいろいろな方からレビューもいただけることもメリット
GitHub Desktopとは?
github desktopとは、gitを扱うためのGUIツールの一つ
github desktopは、githubが提供しているGUIツール
本来ターミナルで実施するGitの作業をGUIを用いて直感的に操作できる
リポジトリとは?
リポジトリとは、Gitで変更履歴を管理しておくための入れ物。
このリポジトリにファイルやディレクトリの変更履歴を記録しておく。
ローカルリポジトリとは?
自分のPC上(ローカル環境)に置くリポジトリのこと。
自分のPC上にあるファイルやディレクトリのバージョン管理を行いたいときに使う。
リモートリポジトリとは?
外部のサーバーなどのネットワーク上に置くリポジトリのこと。GitHubはこちらのイメージ。
リモートリポジトリのメリットは?
ネットワーク上に置くことで、複数人で管理下のファイルやディレクトリを共有することが出来る。
ローカル環境下で問題が起こったとしても、またリモートリポジトリからダウンロードを行うことで元に戻すことが出来る
クローンとは?
リモートリポジトリの内容をまるまる複製して別のマシンのローカルリポジトリを作成すること。
コミットとは?
ディレクトリやファイルの状態を記録するための操作。
コミットすることで現在の状態が、日時や変更を加えた人の情報を含めて一緒に保存することが出来る。
インデックスとは?
バージョンを記録するためにファイルを一時的に登録する場所。同じバージョンとして記録したい編集についてはまとめてインデックスに追加し、このタイミングでは記録したくない編集についてはインデックスに追加しない。
インデックスに追加したものをコミットすることで変更が保存される。変更してはコミットして、変更してはコミットしてだと何度もGitの操作が必要となり非効率ということで生まれた考え方。
コミットメッセージって何故書くの?
コミットする際に添えるメッセージのことをコミットメッセージという。
そのコミットでどのような作業をしたのかということを記録しておくために記述する。
コミット時に注意すべきこと
なるべく細かく行う。1機能1コミットがベター。ファイルをもとに戻すことになった場合、コミットごとでしか戻せないから。
プッシュとは?
ローカルリポジトリで加えた変更とリモートリポジトリに同期させること。
ローカルでコミットが終わり、リモートに変更を同期させたい場合には必ずプッシュを行う必要がある。
ブランチとは?
- リポジトリで管理をしているプロジェクトの履歴の1つ。
- 自分の作業をしている場所のこと。
- ブランチ同士は独立しているため、それぞれのブランチが干渉していない。
- 開発者ごとに担当する機能を明確に分けることが出来る
- 完成途中や問題のあるソースコードをリリースしないで済む。
- 複数人で開発する時にメインのアプリを枝分かれ(複製)させてそれぞれで開発し、終わったらメインへ結合(マージ)する。
プルとは?
リモートリポジトリの変更履歴をローカルリポジトリに反映させる操作のこと。
#プルリクエスト(プルリク)とは?
作成したブランチをmasterブランチにマージをするときの確認作業のこと。
1つのブランチ作業においてコミュニケーションが取れる掲示板のようなもの
そのコードに問題が無いかどうかを他の開発者や上司に確認を行うためにプルリクエストを見て貰う。
マージとは?
ブランチとブランチを結合すること。
LGTMとは?
「コードに問題が無いので、マージをして大丈夫ですよ!」ということ
デプロイとは?
ソースコードを本番環境に設置し、稼働させること
コンフリクトとは?
複数の人が同じ箇所を編集してしまい、変更箇所を自動では判断できすにマージできなくなること。
Github Flowとは?
開発フローのルール的なもの
- masterブランチは常にデプロイ可能である
- 作業用ブランチをmasterから作成する
- 作業用ブランチを定期的にプッシュする
- プルリクエストを活用する
- プルリクエストが承認されたらmasterへマージする
- masterへのマージが完了したら直ちにデプロイを行う