自己紹介
未経験Webエンジニアです。 大手sierから自社開発系web企業に転職するために学習しています。 学習したことをアウトプットしています。
本記事の内容
開発ではGit・Githubを使用するので、基礎となる言葉をまとめたいと思います。
本書ではGithubのリモートリポジトリの以下タブ(Actions、Packages、Releases、Wiki、Security、Insights、Settings)は説明されていない。CI/CDにはActionsが必要とのことなので、後日別書で学習したい。
想定読者
・未経験エンジニア
・Git、Githubについてまだ何もわからない方
参考文献
- たった1日で基本が身に付く!Git超入門
本題
単語 | 意味 |
---|---|
バージョン | ファイルの履歴のこと |
バージョン管理 | 古いバージョンのファイルを残しておき管理すること。手作業でバージョン管理をするのではなく、「バージョン管理システム」で管理する。 |
Git | 現在最も広く使われているバージョン管理システム。Linuxの開発に使うために生み出した。現在は開発以外にも、書籍の現行管理のような用途にも使われる。Gitを使うと、「誰が、いつ、どのファイルの、どの部分を変更したか」を明確に管理できる。よって、問題が起きれば原因究明でき、履歴を遡って問題発生前に戻せる。複数人でファイルを共有して共同作業する仕組みもある。「コミット、プッシュ、プル」といった操作を行う。複数人が同時にファイルを編集して食い違いが起きた場合は、「コンフリクト(衝突)」の状態になり、誰かがコンフリクトを解決するまでファイルを1つに統合できない。 |
Github | Gitの仕組みを利用したインターネット上のサービス。GithubはGitのファイル共有の仕組みをネットワーク上で行うための、保管場所となるサーバーを提供してくれる。内容を公開したプロジェクトは無料で利用できる。2020年に東京都が「新型コロナウイルス感染症対策サイト」をGithub上で公開した。 また、月額数百円で非公開のファイルを記録できるため、非公開プロジェクトのファイル共有にも用いられる。 |
Gitクライアント | Gitを利用するためにインストールするもの。コマンドラインタイプトGUIタイプの2種類がある。Gitクライアントのうち、GitBashはGit For Windowsが配布しているWindows用のアプリ。GitHub DesktopはGutHubが配布しているGUIアプリで、軽く覚えやすい。SourceTreeは多機能のGUI。 |
テキストファイルとバイナリファイル | テキストファイルは文字を表す数値だけで構成され(.txt .html .css ソースコードファイル)、それ以外はバイナリファイル(JPEGやPNGなどの画像データや、WordやExcelなどの文書ファイル)。 Gitはテキストファイルを管理する目的で作られたため、バイナリファイルでは管理項目に制限がある。「いつ、だれが、どのファイルを更新したか」は管理できるが、「バイナリファイルのどの部分が変わっているか」を管理することはできない。 また、大きなバイナリファイルをアップロードするとトラブルが起きることがある。100MBを超える動画ファイルはアップロードすべきではない。 |
Gitの基本的な仕組み
- Gitを利用するには、パソコン内のフォルダをリポジトリに変える。 .gitフォルダがリポジトリの本体。リポジトリに記録する捜査を「コミット」という。
- リポジトリ化したフォルダ内は2つの世界に分かれる。①Git以外のプログラムから見える「ワーキングディレクトリ」②Gitが管理する「リポジトリ」。コミットが複数記録されており、リポジトリを見られるのはGitHub DesktopのようなGitに対応したアプリのみ。
- コミットには「コミット操作を行った時点のワーキングディレクトリの状態」が記録される。ワーキングディレクトリのファイルをすべて削除しても、リポジトリにコミットしていれば、そこからファイル復元が可能。また、個々のコミットには直前のコミットからの変更点(差分)の身が記録される。細心のコミットだけあってもファイルを復元することはできない。
- 一度コミットしたデータはリポジトリから削除できない。(最新コミットだけは取り消せる)コミット後にワーキングディレクトリからファイルを削除してコミットしても、「ファイルを消した」というコミットが登録されるだけとなる。
- Gitで複数人の共同作業をするには、ネットワーク上にリモートリポジトリを作成し、パソコン内のローカルリポジトリと同期する。ローカル→リモートのリポジトリ反映は「プッシュ」、リモート→ローカルのリポジトリ反映は「プル」を行う。複数人がローカルリポジトリで作業し、同じファイル内容が食い違った場合は「コンフリクト」が起こり、解消するまでローカルとリモートのリポジトリを同期できなくなる。