今回はバージョン管理システムのGitについてまとめました。
Gitを使用すると、より効率的にシステムを開発することができます。
ぜひ最後までお読みください!
【Git】基礎まとめ | 初心者向け
1. Gitとは
Gitとは、分散型バージョン管理システムのことです。
「誰が」「いつ」「どんな」変更を加えたかを追跡・記録します。
1-1. GitHubとは
GitHubとは、Gitを使用したサービスのことです。
Gitを使用したサービスは、GitHubの他に以下のようなものがあります。
・Gitbucket
・GitLab
・backlog
1-2. SourceTreeとは
SourceTreeとは、GitをGUI(グラフィカル・ユーザ・インタフェース)で操作できるツールのことです。
GitをGUI操作できるツールには、SourceTreeの他に以下のようなものがあります。
・GitHub Desktop
・GitKraken
・Fork
・TortoiseGit(Windowsのみで動作)
2. リポジトリとは
リポジトリとは、ファイルやディレクトリの状態を記録する場所のことです。
Gitのリポジトリには、「リモートリポジトリ」と「ローカルリポジトリ」の2種類があります。
2-1. リモートリポジトリとは
リモートリポジトリとは、専用のサーバに配置して複数人で共有するリポジトリのことです。
2-2. ローカルリポジトリとは
ローカルリポジトリとは、自分の手元のコンピュータ上に配置するリポジトリのことです。
3. コミット(commit)
コミットとは、ファイルやディレクトリの変更・追加を、リポジトリに記録するためにおこなう操作のことです。
コミットのコマンドは、以下のとおりです。
コミットのコマンドは、以下のとおりです。
git commit -m “コミットメッセージ”
3-1. ワークツリーとは
ワークツリーとは、Gitの管理下に置かれた、ユーザが実際に作業をしているディレクトリのことです。
3-2. インデックスとは
インデックスとは、リポジトリにコミットする準備をするための場所のことです。
インデックスは、リポジトリとワークツリーの間にあります。
Gitでは、コミットでファイルの状態を記録する前に、インデックスにファイルを登録(ステージ)する必要があります。
ステージのコマンドは、以下のとおりです。
Gitでは、「ファイルを変更する」→「ステージする」→「コミットする」の流れを繰り返し、ファイルのバージョンを管理します。
インデックスは、リポジトリとワークツリーの間にあります。
Gitでは、コミットでファイルの状態を記録する前に、インデックスにファイルを登録(ステージ)する必要があります。
ステージのコマンドは、以下のとおりです。
git add ファイル名
Gitでは、「ファイルを変更する」→「ステージする」→「コミットする」の流れを繰り返し、ファイルのバージョンを管理します。
4. ブランチとは
ブランチとは、履歴の流れを「分岐して」記録していくための並行世界のようなものです。
分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に記録することができます。
ブランチには、「枝」という意味があります。
ブランチを作成するコマンドは、以下のとおりです。
チェックアウトとは、ブランチを切り替えることです。
チェックアウトのコマンドは、以下のとおりです。
ブランチを作成して移動するまでを一気におこなう場合のコマンドは、以下のとおりです。
マージとは、ブランチを統合することです。
マージのコマンドは、以下のとおりです。
プッシュとは、ローカルリポジトリの変更を、リモートリポジトリに反映することです。
プッシュのコマンドは、以下のとおりです。
プルとは、リモートリポジトリのデータをローカルリポジトリに取り込むことです。
プルのコマンドは、以下のとおりです。
フェッチとは、リモートリポジトリから最新の状態を取得することです。
フェッチは最新の状態を取得するだけで、ローカルリポジトリの内容を更新しません。
フェッチした内容をローカルリポジトリに反映させたい場合は、フェッチ後にマージします。
フェッチのコマンドは、以下のとおりです。
コンフリクト(競合)は、同じファイルの同じ行に、同時に別々の変更があった場合に発生します。
コンフリクトが発生した場合、マージはおこなわれずエラーになります。
アメンドとは、「プッシュする前に」直前のコミットメッセージを修正する操作のことです。
アメンドのコマンドは、以下のとおりです。
リバートとは、指定したコミットの内容を打ち消すコミットを作ることです。
過去のコミットを削除するのではなく、反対の内容で新規コミットを作成します。
リバートのコマンドは、以下のとおりです。
リベースとは、ブランチをマージする際に、履歴を一直線にすることです。
リベース後はコミットIDが変わってしまうので、慣れないうちはマージを使用しましょう。
リベースのコマンドは、以下のとおりです。
スカッシュとは、プッシュする前にコミットを1つにまとめることです。
プッシュ後にスカッシュをおこなうと、他のメンバーのリポジトリと差異ができてしまい、トラブルの元となります。
スカッシュする場合は、対象のコミットがローカルリポジトリにだけ存在することを確認してからおこ
分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に記録することができます。
ブランチには、「枝」という意味があります。
ブランチを作成するコマンドは、以下のとおりです。
git branch 新規ブランチ名
チェックアウト(checkout)
チェックアウトとは、ブランチを切り替えることです。
チェックアウトのコマンドは、以下のとおりです。
git checkout 移動先のブランチ名
ブランチを作成して移動するまでを一気におこなう場合のコマンドは、以下のとおりです。
git checkout -b 新規ブランチ名
マージ(marge)
マージとは、ブランチを統合することです。
マージのコマンドは、以下のとおりです。
git merge マージしたいブランチ名
プッシュ(push)
プッシュとは、ローカルリポジトリの変更を、リモートリポジトリに反映することです。
プッシュのコマンドは、以下のとおりです。
git push リモートリポジトリ名 ブランチ名
プル(pull)
プルとは、リモートリポジトリのデータをローカルリポジトリに取り込むことです。
プルのコマンドは、以下のとおりです。
git pull リモートリポジトリ名 ブランチ名
フェッチ(fetch)
フェッチとは、リモートリポジトリから最新の状態を取得することです。
フェッチは最新の状態を取得するだけで、ローカルリポジトリの内容を更新しません。
フェッチした内容をローカルリポジトリに反映させたい場合は、フェッチ後にマージします。
フェッチのコマンドは、以下のとおりです。
git fetch
コンフリクト(競合)
コンフリクト(競合)は、同じファイルの同じ行に、同時に別々の変更があった場合に発生します。
コンフリクトが発生した場合、マージはおこなわれずエラーになります。
アメンド(amend)
アメンドとは、「プッシュする前に」直前のコミットメッセージを修正する操作のことです。
アメンドのコマンドは、以下のとおりです。
git commit - -amend
リバート(revert)
リバートとは、指定したコミットの内容を打ち消すコミットを作ることです。
過去のコミットを削除するのではなく、反対の内容で新規コミットを作成します。
リバートのコマンドは、以下のとおりです。
git revert コミットID
リベース(rebase)
リベースとは、ブランチをマージする際に、履歴を一直線にすることです。
リベース後はコミットIDが変わってしまうので、慣れないうちはマージを使用しましょう。
リベースのコマンドは、以下のとおりです。
git rebase リベース先のブランチ名
スカッシュ(squash)
スカッシュとは、プッシュする前にコミットを1つにまとめることです。
プッシュ後にスカッシュをおこなうと、他のメンバーのリポジトリと差異ができてしまい、トラブルの元となります。
スカッシュする場合は、対象のコミットがローカルリポジトリにだけ存在することを確認してからおこ
5. おわりに
今回はバージョン管理システムのGitについて解説しました。
Gitには今回紹介しなかったコマンドもあります。
「もっとGitについて知りたい!」という方は、ぜひ参考記事を読んだり、ご自身で調べてみたりしてください。
参考記事
・https://www.w3schools.com/git/default.asp?remote=github
・https://backlog.com/ja/git-tutorial/