先日、社内研修用にGitの基礎を学ぶための資料を作成しました☝️
せっかくなのでどこかの誰かの役に立てば良いかなと思い、ここに残しておきます!
Gitとは?
Gitは、プログラムや文章などのファイルの「変更履歴」を記録・管理するためのツールのこと。
システム開発においては複数人が同時に同じソースを触るため、各々が好きに変更を加えていけば混乱を招くことになる。
誰がいつどんな変更を加えたのかを記録して、膨大なソースを効率よく管理する。
チームとしてのメリットだけではなく、個人作業においてもメリットはある。
例えば、実装中に「やっぱり前の状態に戻したい」と思った場合に、Gitを使って記録を残しておけば、簡単に過去の状態に戻すことができる。
全体のイメージ
関連用語
リポジトリ
ファイルやディレクトリの状態を記録する場所。
リポジトリの置き場所によって2種類のリポジトリが存在する。
・ リモートリポジトリ
専用のサーバに配置して複数人で共有するためのリポジトリのこと。
GitHubやGitLabに置かれているリポジトリはこっち。
・ ローカルリポジトリ
ユーザ一人ひとりが利用するために、自分の手元のマシン上に配置するリポジトリのこと。
クローン
リモートリポジトリ(GitHubなど)のプロジェクト全体をローカル環境に完全コピーすること。
リポジトリの全ファイル・コミット履歴・ブランチ情報を取得し、独立した開発環境が構築できる。
プル
リモートリポジトリの最新の状況をローカルリポジトリに反映させること。
クローンは環境構築の最初に実施するのに対して、作業開始後にリモートリポジトリの最新状態を取得したい場合はプルを使う。
コミット
ファイルやディレクトリの追加・変更を記録すること
リポジトリに記録するためにはコミットが必要
→ 前回コミット時との差分が記録される。
スタッシュ
ファイルの変更内容を一時的に記録しておく領域
→ ワークツリーとインデックス内でまだコミットされていない変更を一時的に退避させることができる
コミットしていない内容が残ったまま他ブランチへのチェックアウトを行うと、ファイルの変更内容は移動先のブランチに移動してしまう。
そんなときに変更をスタッシュしておけば、後で戻せるようになる。
ブランチ編
ブランチとは、Gitで作業の履歴(バージョン管理)を「枝分かれ」させて管理できる機能のこと。
たとえば、木の幹から枝が分かれるように、プロジェクトのメインの履歴から新しい枝(ブランチ)を作り、そのブランチ上で自由に作業ができる。
運用の仕方等は以下をリンクがすごく参考になります!
ブランチのメリット
• 別ブランチに影響を与えずに作業できる
ブランチを分けておけば失敗しても他のブランチの履歴には影響しない。
• 複数人や複数の作業が同時に進められる
それぞれが自分のブランチで作業できるので、他の人の作業とぶつかりにくい。
• 問題が起きても切り分けやすい
どのブランチで何をしたか履歴が分かれているので、原因調査や修正がしやすくなる。
運用イメージ
関連用語
チェックアウト
作業しているブランチを切り替える操作。
→移動先のブランチ内の最後のコミット内容がワークツリーに展開される。
マージ
ブランチを別ブランチに統合すること。
リベース
コミット履歴を作り直して、ログをきれいに整理すること。
ブランチの変更履歴を、別のブランチの先頭に付け替えるイメージ。
リベースとマージの違い
一言で言うと
· mergeは「履歴をそのまま統合」
· rebaseは「履歴を並び替えて一本化」
マージ
リベース
比較
項目 | マージ | リベース |
---|---|---|
操作内容 | 2つのブランチの変更を統合してマージコミットを作成 | あるブランチの履歴を他のブランチの先頭に並び替える |
履歴の見え方 | 履歴が分岐・合流してマージコミットが残る | 履歴が一直線に整理され、分岐が見えなくなる |
メリット | 変更の履歴がわかりやすい。履歴がそのまま残る | 履歴が綺麗で見通しやすい。無駄なマージコミットが増えない |
デメリット | 履歴が複雑になりやすい | 履歴を書き換えるため、使い方に注意が必要 |
使い分けの例 | チーム開発で履歴を明確に残したいとき | 個人作業や履歴を残したいとき |
※ 使い方を間違えなければチーム開発でもリベースは有効
参考資料