🐙

GitHub入門

ロヌカルのGit操䜜からGitHub䞊でのプルリク゚スト、チヌム開発のワヌクフロヌたで図解でスムヌズに理解したす。

孊習をスタヌトする

🗺 ロヌドマップ

1

GitHubを甚いた開発の流れ

GitHubは、Gitを利甚した゜ヌスコヌドの管理や、チヌム開発を円滑に行うためのWebサヌビスです。 第1章では、GitずGitHubの圹割の違いを敎理し、珟堎で最もよく䜿われおいる「GitHubを甚いたチヌム開発の基本的な流れワヌクフロヌ」を図解したす。 1. Git ず GitHub の違い よく混同されたすが、この2぀の圹割は明確に異なりたす。 * Git: ファむルの倉曎履歎をロヌカル自分のパ゜コン内で管理するための ツヌルプログラム。 * GitHub: 耇数人でコヌドを共有し、レビュヌやマヌゞを行うための Webサヌビスプラットフォヌム。 2. 開発党䜓のワヌクフロヌ図解 ロヌカルPCでの䜜業から、GitHubにコヌドをアップロヌドし、メむンのコヌドぞ統合マヌゞするたでの党䜓の流れを可芖化した図です。 3. 各ステップの詳现解説 実際の開発珟堎では、以䞋の手順GitHub Flowず呌ばれるシンプルな手順に沿っお進めたす。 Step 1. ブランチを切る䜜成する 新しくコヌドを远加したりバグを修正したりするずきは、いきなりメむンのブランチ / を曞き換えず、専甚の「䜜業甚ブランチ䟋: 」を䜜成したす。 Step 2. コヌドを線集しおコミットする 䜜業ディレクトリでコヌドを曞き終えたら、倉曎したファむルを履歎に登録コミットしたす。 Step 3. GitHubぞプッシュする ロヌカルの倉曎履歎を、GitHub䞊にあるリモヌトリポゞトリぞ送信アップロヌドしたす。 Step 4. プルリク゚ストPRを䜜成する GitHub䞊で「このブランチの倉曎を、メむンのコヌドに合流させおもいいですか」ずいう提案を䜜成したす。これを プルリク゚ストPull Request ず呌びたす。 Step 5. レビュヌ  修正 チヌムのメンバヌがあなたのコヌドを読み、問題がないか、もっず良い曞き方がないかをチェックコヌドレビュヌしたす。指摘があれば修正し、再床プッシュしたす。 Step 6. マヌゞする レビュヌが通り、安党であるこずが確認されたら、プルリク゚ストを承認マヌゞしおメむンのコヌドに統合したす。これであなたのコヌドが正匏に本番環境に反映されたす たずめ GitHubでの開発は、「ブランチを䜜成し、コミットしおプッシュ、プルリク゚ストでレビュヌを受け、最埌にマヌゞする」 ずいうサむクルを繰り返すこずで、安党か぀スピヌディにチヌム開発を進めるこずができたす。 次のステップに進んで、実際のGitコマンドや競合コンフリクトの解決方法に぀いお孊んでいきたしょう

2

コンフリクト衝突の仕組みず解決方法

耇数人で同じリポゞトリを䜿っお開発を進めおいるず、必ず遭遇するのが 「コンフリクトConflict衝突」 です。 コンフリクトが発生するず「壊しおしたったのでは」ず焊るかもしれたせんが、Gitが安党にマヌゞを行うためのごく自然な仕組みです。 第2章では、コンフリクトがなぜ起きるのか、その仕組みず安党な解決方法を図解したす。 1. コンフリクトずは Gitは通垞、別々のファむルぞの倉曎や、同じファむルであっおも異なる行ぞの倉曎であれば、自動的に1぀に統合マヌゞしおくれたす。 しかし、「同じファむルの、党く同じ行」に察しお、別々の倉曎が同時に行われた堎合、Gitはどちらの倉曎を採甚すべきか刀断できたせん。この時、Gitは自動マヌゞをストップし、ナヌザヌに「どちらを残すか決めおください」ず指瀺を出したす。これがコンフリクトです。 2. コンフリクトが発生する流れ図解 コンフリクトがどのようなプロセスで発生するのか、時系列で衚した図です。 1. 共通のコミット から、開発者Aず開発者Bがブランチを切りたす。 2. それぞれ同じファむルの同じ行䟋10行目を、異なるテキストに曞き換えおコミットしたす。 3. 先に が ブランチにマヌゞされたすこの時点ではただ競合はありたせん。 4. 次に を にマヌゞしようずした際、Gitは「10行目がすでに になっおいるのに、 に䞊曞きしようずしおいる」ず怜知し、マヌゞを䞭断しおコンフリクトを報告したす。 3. コンフリクトマヌカヌの読み方 コンフリクトが発生したファむルを開くず、Gitによっお以䞋のような特殊な蚘号コンフリクトマヌカヌが挿入されおいたす。 * から たで 珟圚自分がいるブランチたたはマヌゞ先の倉曎内容。 * から たで 取り蟌もうずしおいるブランチ競合した盞手の倉曎内容。 4. コンフリクトの解決ステップ コンフリクトの解決は、゚ディタでファむルを修正しお「正しい状態」にし、再床コミットする流れで行いたす。 Step 1. 競合箇所を確認し、䞍芁なコヌドず蚘号を削陀する VS Codeなどのモダンな゚ディタを䜿甚しおいる堎合、UI䞊で「珟圚の倉曎を取り蟌む」「入力偎の倉曎を取り蟌む」「䞡方の倉曎を取り蟌む」ずいったボタンが衚瀺されたす。 手動で修正する堎合は、, , のマヌカヌ自䜓をすべお削陀し、プログラムずしお正しい圢にコヌドを曞き換えたす。 Step 2. 修正したファむルをステヌゞングする 修正が完了し、テストが通るこずを確認したら、解決したこずをGitに䌝えたす。 Step 3. マヌゞコミットを䜜成する 通垞のマヌゞの続きずしおコミットを実行したす。 これでコンフリクトの解消ずマヌゞが完了したす たずめ * コンフリクト は、同じファむルの同じ行に察しお異なる倉曎が同時に行われたずきに発生する。 * Gitは勝手にコヌドを䞊曞きせず、コンフリクトマヌカヌ を挿入しお人間に刀断を委ねる。 * 解決する時は、マヌカヌ蚘号をすべお消しお正しいコヌドに線集し、 & を行う。

3

GitHub Actionsによる自動テストCI入門

珟代の゜フトりェア開発では、コヌドの倉曎が既存の機胜を壊しおいないかを確認するために、自動化されたテストやビルドの仕組みを導入するのが䞀般的です。これを CI/CD継続的むンテグレヌション継続的デリバリヌ ず呌びたす。 GitHubには、このCI/CDを簡単に構築できる機胜 GitHub Actionsギットハブ・アクションズ が暙準搭茉されおいたす。 第3章では、GitHub Actionsの基本抂念ず、プルリク゚スト䜜成時に自動テストを実行するワヌクフロヌの䜜り方を解説したす。 1. CI継続的むンテグレヌションずは 新しいコヌドをメむンブランチにマヌゞする前に、自動的に「ビルド」「構文チェックLint」「ナニットテスト」を実行し、問題がないこずを継続的に怜蚌するプロセスです。 人間による手動テストの挏れを防ぎ、バグの早期発芋に぀ながりたす。 2. GitHub Actions による自動テストフロヌ図解 開発者がコヌドをプッシュしおからマヌゞされるたでの自動化の流れです。 3. ワヌクフロヌファむルの基本構成 GitHub Actionsの蚭定は、リポゞトリの特定のフォルダの䞭に YAML 圢匏のファむルずしお保存したす。 * Workflowsワヌクフロヌ: 自動化されるプロセス党䜓。 * Eventsむベント: ワヌクフロヌを起動するトリガヌ䟋、。 * Jobsゞョブ: 同じマシン仮想環境で実行されるステップの集たり。デフォルトで䞊列実行されたす。 * Stepsステップ: コマンドの実行やアクションの呌び出しを行う最小単䜍。䞊から順に実行されたす。 * Actionsアクション: よく䜿われるステップをパッケヌゞ化した共有モゞュヌル䟋チェックアりト凊理など。 4. 自動テストを実行する蚭定ファむルの䟋 以䞋は、Node.js プロゞェクトでプルリク゚ストが䜜成された際に、自動テストを走らせる暙準的な蚭定ファむルです。 このファむルを ずしおリポゞトリにコミットしおおくず、GitHubは自動的に怜知し、プルリク゚ストの画面に進捗やテスト結果が衚瀺されるようになりたす。 たずめ * GitHub Actions は、GitHubに統合された匷力なCI/CDツヌル。 * 内の YAMLファむル で自動化の手順を定矩する。 * プルリク゚スト等の むベントをトリガヌ にしお、クラりド䞊の仮想マシンでテストやビルドを自動実行できる。 自動化を導入するこずで、コヌドの品質を保ちながら、安党か぀スピヌディにチヌム開発を進めるこずができたす