【ITエンジニア】(20)ソース管理の実践

バージョン管理とは

バージョン [版] 管理とは…

ファイルやデータの変更履歴を管理するためのしくみを「バージョン管理システム」と言う。

例えば、ひとつの共有すべきファイルを複数人の人が編集した時に、どれが最新でどれが正しいデータなのかわかりにくくなるため、わかりやすくするために利用される。

特にソフトウェア開発においては、ソースコードの管理に用いられることが多い。

バージョン管理のしくみ

バージョン管理システムとは、「誰が、いつ、どこを変えたのか?」などのデータの変更履歴を「リポジトリ」と呼ばれる場所(ファイル)に全て記録しており、開発者はリポジトリに履歴を残したり、履歴から元の状態に戻したりすることが可能である。

Git とは

Git (ギット)とは

バージョン管理システムの中でも「分散バージョン管理システム」と呼ばれるもの。

2005年に Git が開発されるまでは、各ユーザの変更箇所がカブってしまったりすると、先に編集した人の内容が上書きで消えたりなど、色々な不整合がたびたび起きていた。

その理由は「リポジトリが1つしかないため」であり、それを解消するためにリポジトリ自体を分散してしまうように開発されたのが Git である。

分散バージョン管理方法とは

分散バージョン管理システムとは、全体を統括する「リモートリポジトリ」から、各ユーザが持つ「ローカルリポジトリ」に分け、ローカルでリポジトリ(変更履歴)を変更してから、リモートと同期するしくみ。

これによりネットワークが繋がらない環境でも管理ができ、従来に比べて全体の整合性を保ちやすくなった。

ブランチとは

ブランチとは

ブランチは、変更履歴を分岐させる機能。同じリポジトリを複数の異なる作業内容で同時に作業するための機能で、それぞれの作業が完了したら、合体させたりすることができる。

作業中は、ブランチ同士をマージ(結合)させるまで他のブランチの影響を受けない。

ブランチ戦略

ブランチ戦略とは、効率的にバージョン管理を行うためのブランチ取り扱いルールです。

Gitブランチ機能をうまく活用するために、様々なアイデアがあり、それを「ブランチモデル」と言います。

git-flowブランチモデル

ブランチモデルで最も有名なのが git-flow というモデルで、以下の様にブランチ管理します。

  1. master ブランチ
  2. hotfix ブランチ
  3. release ブランチ
  4. develop ブランチ
  5. feature ブランチ

Git を利用したサービス

Gitはサービスではなくツールそのもの

GitHub (ギット・ハブ) 、GitLab (ギット・ラボ) など、“Git” と名前がつくサービスが多数あり混乱しやすいので、GitHub を例にして、ここでツールとサービスの違いを整理しておきます。

  • Git:分散バージョン管理ができるツール
  • GitHub:Git を利用したWebサービス (Git ホスティングサービス)

GitHubのようなGit ホスティングサービスは、他にもたくさん存在する。

クラウド (Web上で利用) もあれば、オンプレミス (サーバにインストールして利用) もある。

Git 操作フロー

Gitの基本フロ

Git の利用フローは「ローカルで作業し、リモートに反映させる」が基本。

Git の変更反映時の基本フロー

Git では、自分の作業を変更履歴として反映させるために、以下の操作が行われる。

Git の変更反映時の基本フロー

先ほどの操作内容と、実際のファイルの動きを表すと、以下のとおり。

Git 操作ツール

GUIツールとCLIツール

GUIとはマウスや簡単なキー入力などだけで、直感的に操作ができるものを指し、CLIとはコマンドライン(真っ黒画面で文字だけ出るような画面)で操作するものを指す。

Git の主要な操作方法 ① CLONE

リモートリポジトリからローカルリポジトリを生成する

リモートリポジトリを自分のマシンにコピーするコマンド。

git clone(リモートリポジトリのパス/URL)

例:git clone git@gitlab.com:xxx/kenshuRepo.git

Git の主要な操作方法 ② STATUS

ローカルリポジトリの作業状況を確認する

ローカルリポジトリの現在の差分がどのファイルかを確認するコマンド。

git status

Git の主要な操作方法 ③ ADD

ステージング対象を指定する

ローカルの作業ファイルの中で、どれを反映候補にするか決定する。この後も作業は可能。

git add (ステージング対象 or ドット「.」)

例:git add source1.html source2.html style.css

Git の主要な操作方法 ④ COMMIT

差分(変更分)を記録する

ローカルの最後の最新状態からの差分(前回のコミットからの変更分)を記録するコマンド。

git commit または短縮形:git commit -m ‘コミットメッセージ’

コミットメッセージ

コミットを行う際には、必ず「何が変わったのか」の短い概要を一緒に記録する。

これをコミットメッセージと言い、標準的に以下のような書き方をする。

(終わった後は、保存コマンド(Linux系OSなら :wq など)を実行して確定する)

Git の主要な操作方法 ⑤ PUSH

ローカルリポジトリからリモートリポジトリに反映する

リモートリポジトリに自分の変更履歴を同期させるコマンド。

git push(リモートリポジトリ名) (リモートブランチ名)

例:git push origin master

Git の主要な操作方法 ⑥ PULL

リモートリポジトリから最新状態を取り込む

リモートリポジトリからローカルリポジトリに最新状態を「取り込む」コマンド。

git pullまたは git fetch コマンド後に git merge

付録:Git コマンド一覧

#コマンド処理内容
1git clone {PATH}リモートからローカルにリポジトリを複製する
2git pullリモートからローカルに最新を取り込む(追加する)
3git status作業状況を一覧表示する
4git add {. または file_path}作業中のコミット候補をステージングする (作業は継続可能)
5git commitコミットする(変更履歴を記録)コミットメッセージ必須
6git push {repo} {branch}ローカルからリモートにリポジトリ内容を反映させる
7git merge {branch}リモートからローカルに最新を取り込む(追加する)
8git checkout {branch}「現在作業しているブランチ」を指定ブランチに切り替える
9git branchブランチ一覧を表示する
#コマンド処理内容
1git commit –amend直前のコミットを書き換える(再編集)
2git branch -d {branch}指定ブランチを「ローカルブランチ」から削除する
3git logコミットのログ(履歴)を表示する
4git reset –soft HEAD~2最新コミットから2件分を取り消す(作業中の変更は残す)
5git reset –hard HEAD~2最新コミットから2件分を取り消す(作業中の変更も取消)
6git config –listgitの設定情報が key=value 形式で一覧表示される
7git config –global –listgitのグローバルな設定情報が一覧表示される
8git config user.name “x”gitのユーザ名を設定(x の部分)–global 必要かも
9git config user.email xxxgitのユーザパスワードを設定(xxx の部分)–global 必要かも

※最新の情報の取得・更新に努めておりますが、掲載内容については、その正確性、完全性、有用性、最新性等についていかなる保証もするものではありません。

タイトルとURLをコピーしました