blog/content/posts/2025-06-01/index.md

5.1 KiB
Raw Blame History

author draft categories date tags keywords title relpermalink url decription
usbharu false
null
2025-06-01T12:33:00+09:00
null
null
知っておいて欲しい順 開発に関すること posts/2025-06-01/ posts/2025-06-01/ TBD

謎のモチベーションが湧いてきたので、なんとなく書いてみることにしました。基本的に概念の把握のため、正確さを落としています。

Git・バージョン管理

有名なバージョン管理システム。 まず、ここで言うバージョン管理というのは

2024年4月用企画書1_最終版_誤字修正済み(1)のコピー.docx
2024年4月用企画書1_最終版_本当に最終版.docx
2024年4月用企画書2コピー1最新版.docx

や、WordのUndoとRedoボタン のようにファイルのバージョンを管理することです。

でも上の例ではどれが最新版なのか、どれを編集すれば良いのか、どれが最終的に使われるファイルか分かりません。そもそもプログラミングではファイル名に制約があったり、同じような内容が書かれているファイルが複数あったらエラーになるかもしれません1

バージョン管理システムはこれらを機械的に処理し、チームで共有できるようにしたものです。おもに以下の概念を覚えておくと良いと思います。

コミット・チェックポイント

ユーザーが任意のタイミングでチェックポイントのようなもの2を作成し、チェックポイントの履歴をプロジェクトごと3に自由に巻き戻す事ができます。

ブランチ・分岐

また履歴の分岐4を作成し、チームメンバーがそれぞれの分岐で作業することで、複数人が別の機能を同時に開発することができます。

マージ・分岐の結合

分岐をいい感じに結合し、複数人が同時に開発した別の機能をまとめて最新のチェックポイントとして作成する5ことができます。いい感じに結合できなかった場合、コンフリクト(Conflict/競合)が発生し、手動で治す必要があります。

Git

現在デファクトスタンダードになっているバージョン管理システムです。

サル先生のGit入門〜バージョン管理を使いこなそう〜【プロジェクト管理ツールBacklog】 https://backlog.com/ja/git-tutorial/

GitHub・Gitサーバー

Gitをチームで共有するには、Gitサーバーが必要です。また、マージを行うため、誰かのGitに分岐履歴全部を送りつける必要があります。Gitサーバーはプロジェクトに存在する履歴と分岐を、1箇所で管理する保存場所のような場所です。

プル・分岐の履歴のダウンロード

まずの分岐の履歴ダウンロード6を行い、他のチームメンバーとスタート地点を合わせます。

プッシュ・分岐の履歴のアップロード

開発を進めていき、コミットがいくつかできたところで機能が完成したとします。完成した機能を他のチームメンバーと共有、マージするため、機能を開発していた分岐の履歴をGitサーバーにアップロード7します。

プルリクエスト・Gitサーバーでのマージ

プルリクやPull Request、PRと呼ばれたり、マージリクエストと呼ばれたりもしますが、要はGitサーバーにアップロードした分岐の履歴(ブランチ)をマージする準備のことです。

プッシュされ、Gitサーバー上に存在するブランチ(分岐の履歴)を本流のブランチ8にマージするため、様々なチェックなどを行います。(レビュー)

GitHub

有名なGitサーバーです。CI/CDレビューに必要な環境が整っています。

GitHub https://github.com/

テスト

フォーマッター・Formatter

リンター・Linter

CI

CD

レビュー


  1. 例えばJavaなら、同じクラスが複数あったらエラーになりますね。 ↩︎

  2. コミット(Commit)と呼びます。 ↩︎

  3. 正確にはプロジェクトごとではなく、リポジトリ(Repository)ごとです。1プロジェクトに複数リポジトリが関わることも、その逆もあります。 ↩︎

  4. ブランチ(Branch)と呼びます。 ↩︎

  5. マージ(Merge)と呼びます。 ↩︎

  6. プル(Pull)と呼びます。 ↩︎

  7. プッシュ(Push)と呼びます。 ↩︎

  8. 開発時点での最新版、最終的にすべてのブランチがマージされてくる大もとのブランチで、develop、main、masterなどがよく使われます。 ↩︎