#はじめに
この記事は初学者の学習内容の記録用です。
記載内容に間違いがありましたら、ご指摘いただけると幸いです。
#Gitとは
バージョン管理ツールの一つで
ソースコードのバージョン管理に使用される。
#Gitの特徴
- リモートとローカルでソースコードを管理する
分散型バージョン管理システム(Distributed Version Control System) - ローカルでは更に「ワークツリー」「ステージ」「ローカルリポジトリ」に
分かれてソースコードを管理する - スナップショットを取って変更したファイルをまるごと記録する(差分管理ではない)
- コミット時に一つ前のバージョンを記録しているので過去にさかのぼっていける
#Gitのメリット・デメリット
###メリット
- ブランチを素早く作れるので、複数人で同じファイルを編集している際でも
並行して作業しやすい - ローカルにステージがあることで記録したい単位でファイルを管理しやすい
- ローカルにリポジトリがあることでオフラインでもバージョン管理できる
- Github Flowに沿って開発するとコードレビューを
masterへのマージの都度できて品質向上につながる
###デメリット
- 機能がたくさんあり複雑である
#Git基本用語
用語 | 解説 |
---|---|
リポジトリ | スナップショットを記録するデータの保管場所 |
ステージ | コミットする変更を準備する場所 |
ワークツリー | ファイルの変更の作業場所 |
コミット | ファイルの変更を確定し記録すること |
ブランチ | プロジェクトの履歴を分岐させたもの |
フェッチ | リモートリポジトリの内容をローカルリポジトリに取り込むこと |
マージ | ブランチを統合すること |
プル | ローカルで作業中のブランチにフェッチとマージを一度にすること |
コンフリクト | マージの際に変更したファイルの場所がかぶっていたときに起こる |
プッシュ | コミットした内容をリモートリポジトリに送ること |
プルリクエスト | プッシュした内容のレビューを依頼し、問題なければマージしてもらう |
#Gitで最初にやること
- Gitをインストール
- Githubアカウントを登録し、リモートリポジトリを作成
- .gitignoreファイルにGithubにアップロード・バージョン管理しないファイル
(パスワード、外部リソース接続情報などの設定ファイル・キャッシュファイル)
を定義する
※Githubでリポジトリの新規作成時に各言語・FWごとにテンプレートがあるので
自動生成がおすすめ【GitHub】.gitignoreのテンプレートを言語・FWごとに自動生成 - ローカルでリモートリポジトリとの紐付けをする(git remote add)
- 管理対象フォルダ・プロジェクトを初期化する(git init)
#Gitを使って個人的にバージョン管理するフロー
- ファイルをワークツリーで変更する
- 記録したいファイルをステージに登録してインデックスを作成する(git add)
- 記録を確定させたいインデックスをコミットする(git commit)
- 作業が一区切りついたらリモートにプッシュする(git push)
#Gitを使ってチーム開発するフロー(Github Flow)
- masterブランチから作業用ブランチを作成
- 作業用ブランチでファイルを変更してコミット
(上記:Gitを使って個人的にバージョン管理するフローと同じ) - 作業用ブランチをGitHubへプッシュ
- プルリクエストを送ってコードレビューを依頼
- コードレビューでOKが出ればmasterブランチにマージ
- masterブランチをデプロイ
- masterはリリース用ブランチです。
- 開発する機能・修正などの作業の単位で別にブランチを作成して作業します。
#参考・学習したサイト