はじめまして。熊本事業所で働いているS.Tと申します。
皆さんはGitを使ったことがありますでしょうか。
ITに関連する仕事をされている方なら使用されている方も多いかと思います。
私も実際に業務で使用しており、新入社員研修でもGitを使用しておりました。
その際は事前知識無しで使用してしまったため、トラブルを発生させて迷惑をかけてしまい、苦労することも多々ありました。
その経験を踏まえて、少しでもGit理解の参考になればと考え、本ブログではGitについて学習した内容をまとめております。
Contents
Gitとは
そもそもGitとは何かというと、バージョン管理システムの1つです。
バージョン管理システムは以下の機能を持っています。
・ファイルの共有
‐同じファイルを複数人で共有し、保持できる。
・ファイルの同期
‐1人が変更を加えた内容を他のメンバーに反映し、同じ状態にできる
・履歴の管理
‐変更履歴の保存や過去のバージョンに戻る、変更内容を確認する事等が可能。
また、バージョン管理システムは、集中型バージョン管理システムと分散型バージョン管理システムに分類され、Gitは分散型バージョン管理システムに該当します。
分類の違いについては以下の通りです。
・集中型バージョン管理システム SVN等
プロジェクト全体で1つのリポジトリ(データ格納庫)を編集する
・分散型バージョン管理システム Git等
プロジェクト全体のリモートリポジトリに加え、
個人毎にローカルリポジトリ(リモートリポジトリのコピー)が存在する。
個人で編集したものをリモートリポジトリに反映して全体で共有する方式。
以上の事から、バージョン管理システムはファイルの変更履歴を記録し、複数人で共同作業を行う際にスムーズな作業をサポートするツールです。そのため、複数人で行うプロジェクトには欠かせないものとなっております。
Git基本用語
ここでは、分散型バージョン管理システムであるGitで使用する基本用語について解説します。
・リポジトリ
プロジェクトのファイルや履歴を保存する場所。
データ等を格納する箱のようなイメージ。
‐ローカルリポジトリ
自分のパソコンに存在するリポジトリ。
各ユーザのローカルリポジトリで管理する方法は「分散管理方式」。
‐リモートリポジトリ
ネットワークで接続しているサーバなどに存在するリポジトリ。
システムの全データを記録し、複数人で情報を閲覧・活用・共有できる。
リモートリポジトリのみを使用した管理方法は「集中管理方式」。
・プル
リモートリポジトリに加えられた変更をローカルリポジトリに反映させること。
フェッチ+マージを行っている。
・コミット
自身が加えた変更をローカルリポジトリに反映させること。
・プッシュ
ローカルリポジトリにコミットした変更をリモートリポジトリに反映させること。
・ブランチ
ファイルを編集する際に分岐させることでプロジェクト本体に影響を与えずに
開発を行える機能。分岐の際に、元ブランチとコピーに分岐するイメージ。
プログラムの修正や機能の追加を行う際に修正や追加ごとにブランチを追加し、
担当者がそれぞれのブランチ(コピー)に対して編集を加える。
・マージ
変更を加えたブランチを元のブランチに合流させ、変更を反映させること。
・フェッチ
最新のリモートリポジトリのデータをリモート追跡ブランチに保存すること。
最新のデータをローカルで使用するブランチにマージしたくないが、リモートリポジトリの情報を確認したい時に使用する事が多い。
・リモート追跡ブランチ
リモートリポジトリのデータを保持しておくためのブランチ。
・競合(コンフリクト)
複数人で編集行が重複したファイルをマージしようとした際に発生する状態。
競合を発生させないためには、編集箇所が重複しないようにする等のルールを定めておく必要がある。
ここまで、最低限覚えておくべきGitの基本用語を紹介いたしました。
最後の競合については、新入社員研修で同じグループのメンバーに迷惑をかけてしまった経験を踏まえて、以下の対策を行うことをおすすめします。
1.変更を行う前に必ずプル(更新)を行う
→プル(更新)をせずにコミットしてしまうと、他のメンバーが変更を加えていた場合、その変更箇所が自身の変更箇所と同じ行であれば、競合が発生します。行が異なればマージをする事が可能ですが、習慣化するためにも変更前はプルを行う習慣をつけておきましょう。
2.同じファイルを複数人で編集しない
→複数人で同一ファイルを触ることが無ければ、変更箇所が重複する事はありません。
そのため、同一ファイルを触る事がないようコミュニケーションを取り、チーム内でメンバー全体がお互いの作業を把握している状態にしましょう。
まとめ
本ブログでは、分散型バージョン管理システムのGitについて学習した内容をまとめてみました。私も学習を始めたばかりで実務レベルでの知識はありませんが、これからGitを理解していく方やまだGitを知らない方にとって少しでも参考になる記事となっていれば幸いです。
参考資料
今回のブログ執筆に伴い、参考にさせて頂いた記事のリンクをまとめております。
Gitには上記の用語以外にもフェッチやリバート等その他の用語等もありますのでより詳細について学習したい方は以下の参考資料から調べてみることをおすすめします。
1.リポジトリが持つ役割とは?種類やメリットについて詳しく解説!|ITトレンド
https://it-trend.jp/development_tools/article/32-0047
2.【入門】Gitとは?できることや使い方、GitHubとの違いをわかりやすく解説 – カゴヤのサーバー研究室
https://www.kagoya.jp/howto/it-glossary/develop/git/
3.GitとSVNの違いとは?基本構造、ブランチ管理、マージの仕方まで詳しく解説 | コラム | aslead | 野村総合研究所(NRI)
https://aslead.nri.co.jp/products/gitlab/column/differences-between-git-and-svn.html
4.【初心者】【バージョン管理】中央集中型システムと分散型システムについて #Git – Qiita
https://qiita.com/y518gaku/items/9a789b4bddfabe687dfa
5.Gitの頻出用語まとめ | YUJIRO BLOG
https://yujiromx.com/git-word-list/
6.変更履歴のマージ|サル先生のGit入門【プロジェクト管理ツールBacklog】
https://backlog.com/ja/git-tutorial/intro/17/
7.バージョン管理システムとは?ツールの導入・活用で生産性の向上は可能か|プロジェクト管理・工数管理「クラウドログ」
https://www.crowdlog.jp/blog/131257/
8.【Git入門】ブランチ(branch)とは?メリットや使い方を解説! | 侍エンジニアブログ
https://www.sejuku.net/blog/71071
また、弊社では新入社員ブログの他にも、技術的なブログが多数あります。以下に事例を掲載しておりますので、ご興味ある方は是非ご覧いただけますと幸いです。
【やってみた共有】GPTsでBacklogコメントを翻訳しよう
記事 : BSサービス事業部 S.T
- ←back
- 新入社員ブログ