Gitとは
Git とはオープンソースの分散型管理システムの 1つです。
Git を使ってバージョン管理をすることで、ファイルを更新する度にファイル名を変える必要がなく、ファイルの編集履歴の管理が容易になります。
修正前後のデータが別々に保存されるため、修正前に戻したいという場合も簡単にできます。また、修正履歴も残るため、複数人で作業をする開発現場などでも重宝されています。
バージョン管理システムとは
Git はバージョン管理システムと呼ばれますが、この「バージョン管理システム」とは、ファイルなどのバージョン管理をするものです。ただ保存するだけではなく、誰がいつどこを変更したのかといった履歴を記録し管理します。そのため、バージョンを戻すのも簡単なのです。このように、変更内容をバージョンごとに記録することで、ファイルを扱いやすくしているのです。
GitとGitHubの違い
Git と似た用語で「GitHub」というのがありますが、これらは別物です。「Hub」には「拠点」という意味もありますが、GitHub は Git の仕組みを用いて、開発者にとって便利な機能が追加することで、Git をより使いやすくした Webサービスで、ユーザ同士でのソースコードやデザインのやり取りができます。
GitHub は Git を用いることでユーザ間のやりとりをしやすくしていますが、一番の違いは、Git が CUI仕様であるのに対し、GitHub は GUI仕様であることです。CUI (コマンドラインツール) とは黒い画面にキーボードでコマンドを入力して操作するもので、不慣れな人にとっては使いにくいです。一方の GUI (グラフィカルユーザインターフェイス) は画面上でマウスを使っての操作が可能で、直感的な作業が可能です。
Gitが生まれた背景
通常は、ファイルを修正前の状態に戻したい場合、事前にファイルのコピーをとっておく必要があります。しかし、膨大な量のデータをコピーするのは時間や手間がかかってしまい見落としや誤操作といったリスクも高なります。また、チームで 1つのファイルを共有している場合、誰がいつ編集したかわからなくなったり編集内容が消えてしまったりといったことも起こります。こういった問題を解決するために編集作業や複数人での作業を効率化し、管理しやすくする「Git」が作られました。
Gitを使ってできること
編集前後のファイルを一元管理することができる
Git を使うことで、編集前後のファイルを一元管理することができるため変更履歴がわかりやすく、ファイル名をいちいち変更して保存する必要もなくなります。
過去のデータにアクセス・復元できる
Git ではバージョンごとに管理されているため、過去のバージョンの閲覧も簡単で過去のバージョンに戻したい場合でも簡単に戻すことができます。
バージョンを元に戻す作業が効率化できる
一度バージョンアップしてから前のバージョンに戻す (ダウングレード) には、だいたいアップグレードの半分程の時間がかかります。また、ダウングレードが失敗する場合もあるため、データのバックアップにも手間がかかります。その点、Git であればファイルをアップデートしても編集前のデータも保存されているため、任意のバージョンに戻すのも簡単です。
複数人で同じファイルを同時進行で編集できる
複数人で編集作業を行う場合、同じファイルを同時に編集するのは難しく、先に編集した方の編集内容が上書きされてしまって消えてしまうトラブルが起こるケースもあります。その点、Git を使えばネット環境で同じファイルを同時に編集することが可能で、それぞれの変更履歴を保存できるため、効率的に作業を進められます。これはチームで作業をすることの多いシステム開発の現場では重宝されています。
さまざまなファイルが管理できる
Git はデータの管理や共有、編集作業の効率を上げられるツールです。
Git では、プログラムのソースコードだけではなく、Excel、Word、テキストファイル、画像ファイルなど、あらゆるファイルを管理できます。
Gitが活躍する場面
Git を使うことで編集管理がしやすくなるため、コードの編集作業の多いエンジニアやテキストデータを扱う Webデザイナー、原稿の納品する機会の多い Webライターなどに利用されることが多いです。
また、最近では企業の事務でもデータの保存用ツールとして Git が採用されることも多くなってきています。
Git の用語
用語 | 意味 |
リポジトリ | ファイルの変更履歴が保存される場所 ローカルリポジトリとリモートリポジトリの2種類がある |
リモートリポジトリ | サーバ上に作られ、複数人がアクセスできるリポジトリ |
ローカルリポジトリ | 個人の PC 上に作られ、自分だけがアクセスできるリポジトリ |
ワークツリー | ファイルの変更作業を行っているディレクトリ |
インデックス | ファイルの変更履歴を一時的に登録する場所 |
コミット | インデックスに登録した変更履歴をローカルリポジトリに取り込む インデックスがファイルの変更部分だけを保存するのに対し、 コミットは変更部分とファイルを保存する |
プッシュ | ローカルリポジトリの変更をリモートリポジトリに反映させる |
ブランチ | 変更履歴を分岐させることで複数の変更履歴を並列に管理する コピー元と同じ環境で作業できる |
リモート追跡ブランチ | ブランチの更新情報を保管する |
クローン | リモートリポジトリを複製してローカルリポジトリに作る |
フェッチ | リモートリポジトリから更新情報をローカルリポジトリに読みこみ、 その内容をリモート追跡ブランチに保管する |
プル | リモートリポジトリにあるファイルをローカルリポジトリにダウンロードする |
マージ | 2つに分岐した変更履歴を 1つにする |
チェックアウト | ワークツリーにブランチを切る (展開する) |
ステージング | ワークツリーの変更履歴をインデックスに登録する |