バージョン管理のメリット:
- バックアップの必要性がなくなるため、ファイルの安全性が高まる。
- 過去のバージョンとの比較や差分の確認が容易になる。
- 競合やデータの上書きを心配する必要がなくなる。
- 保存された履歴から、誰が何を変更したかを追跡できる。
リポジトリ:
ファイルやディレクトリの状態を保存し、変更履歴を管理するための場所。
複数人で共有するためのリモートリポジトリと、個々の開発者が利用するためのローカルリポジトリがある。
コミット:
ファイルやディレクトリの追加・変更をリポジトリに記録する操作のこと。
過去の履歴と内容を追跡し、変更内容を調査したり、履歴を振り返ったりできる。
コミットメッセージを記述することで、変更内容の要約や変更した理由をわかりやすく記録できる。
ワークツリーとインデックス:
ワークツリーはGitの管理下にある作業ディレクトリで、開発者が実際にファイルを編集する場所。
インデックスはワークツリーとリポジトリの中間に位置し、コミットする前のステージングエリアとして機能する。
インデックスを介してコミットを行うことで、必要のないファイルを含めずにコミットしたり、一部の変更だけをコミットすることができる。
コミットメッセージの書き方
コミットメッセージは変更内容の要約や変更した理由を記述するためのものであり、他の人がコミットの変更内容を理解したり、自分自身が後から履歴を確認する際に重要な情報。Gitでは一般的に以下の形式でコミットメッセージを書くことが推奨されている。
ブランチとは
並行して行われる複数の機能追加やバージョン管理を支援する機能で履歴の流れを分岐して記録していくためもの。
分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に進めていくことができる。
1行目: コミットでの変更内容の要約
2行目: 空行
3行目以降: 変更した理由や詳細な説明
##基本的な流れ
初期化
git init
リモートレポジトリを登録
git remote add <name> <url>
ワーキングツリーのファイルをインデックスに追加
git add <file>
インデックスの内容をローカルリポジトリに書き込む
git commit (-m でメッセージ付きで実行可能)
ローカルリポジトリの内容をリモートリポジトリに追加
git push origin <remoteのブランチ名>
ブランチ
作業するブランチを切り替えるには、チェックアウトという操作を行います。チェックアウトを行うと、チェックアウト後に行ったコミットは、移動後のブランチに対して追加されるようになります。
ブランチの作成
git branch <作成するブランチ名>
ブランチの作成とチェックアウト
git checkout -b <ブランチ名>
ブランチを削除するには、branchコマンドに -d オプションを指定して実行。
$ git branch -d <ブランチ名>
ブランチの統合
merge
mergeを使用すると、複数の履歴の流れを合流させることができる。
両方の変更を取り込んだマージコミットが作成される。
マージの実行時に、non fast-forwardマージというオプションを指定することで、fast-forwardマージではないマージを実行できる。
rebase
ブランチの履歴がmasterブランチの後ろに付け替えられます。
merge: 履歴が複雑になる。変更内容の履歴は残る。
rebase: 履歴は単純。元のコミットの内容が変更される。