😽

Git,GitHubを理解する

2023/12/20に公開

はじめに

Git,GitHub の使い方について
学んだ部分を備忘録として書かせていただきました。

そもそも Git とは?

Git とは、分散型のバージョン管理システム。
コードの変更履歴を追跡し、
チームでの共同作業を支援するもの。

分散型や、バージョン管理システムなど難しい言葉がありますが
簡単に言うとGitとはチーム開発で必要なもの
とだけ覚えておいてください

GitHub とは?

Git リポジトリをホストするクラウドサービス(リモートリポジトリ)。
コードのホスティング以外にも、イシュートラッキング、タスク管理、
コードレビューなどの機能があります。

ネットワークにありコード保存庫みたいなものです
Git を用いて開発をして最終的には GitHub に保管していきます。

GitHub Desktop とは

GitHub 公式が開発した、Git と GitHub の操作を
デスクトップで行えるアプリケーションです。

Git の操作

リポジトリの作成

リポジトリとはソースコードの保存場所。チーム開発をする場合
そのチームによってリポジトリの粒度が変わります。

例:1 つのプロジェクトで複数のリポジトリがあるパターン
・よくあるのがフロントエンド用のリポジトリ、
バックエンド用のリポジトリと分かれているなど

リポジトリにはリモートリポジトリローカルリポジトリ
2種類が存在します。

リモートリポジトリとは
GitHub にあるリポジトリのことを指し

ローカルリポジトリとは
個人の PC 内にあるリポジトリのことを指します。

クローン

GitHub で作成したリモートリポジトリを
個人のローカル PC に複製することを言います

クローン方法は、
・ターミナル
・VS Code
・GitHub Desktop
などが存在します。

コミット

変更を記録することをコミットと言います。
・記録する際に必要なメッセージはなるべくわかりやすく書く
・わかりやすい単位でコミットを分ける

プッシュ

リモートリポジトリにローカルで変更したデータを反映させることを指します。
書き終えたコードはプッシュを行うことによって
github に反映させることができます。

フェッチ

リモートリポジトリにあるコードとローカルリポジトリにある
コードの変更点がないですか、と確認をすることを指します。

github DeskTop では自動で行われる為そんなに意識しなくて問題ないです。

プル

リモートリポジトリにある変更をローカルに反映することを指します。
これを行うことによりリモートリポジトリにある
最新のコードの状態で開発を行うことができます。

コンフリフト

リモートレポジトリの変更点と、ローカルの変更点が衝突してしまった場合に
発生するエラーのようなものです。

例えば A さんが header のコードを変更しプッシュ
B さんも header の同じ部分を編集しプッシュしようと
した際に起こります。

コンフリクトが起こった際はどちらが正しい変更かを
選択することにより解消されます。

コンフリクトをなるべくなくす方法としては
頻繁に プル を行い
最新のコードの状態を保つ必要があります。

ブランチ

ブランチとは履歴の流れを分岐して記録していくものです。
リポジトリを作成したら自動的に main ブランチが作成されます。
基本的に main ブランチは本番環境用として運用されることが多く
main ブランチに直接プッシュはバグを生む可能性があるため
他のブランチで分岐し、エラーが無ければ main ブランチに
プッシュするやり方があります。

チームにもよりますが、
ブランチの分岐方法は機能ごとに派生させたり
本番環境一歩前のための dev ブランチを切ったりすることもあります。

プルリクエスト

ブランチとブランチを統合する時に使われる GitHub の機能です。
プルリクエストを通してコードレビューを行うことができ、
上司や管理者にコードレビューを見てもらい問題がなければ
対象のブランチにマージする流れが一般的です。

Git Hub のその他の機能

Projects

タスク管理を行うための機能です。
ドラッグアンドドロップで今あるタスクの状況を
それぞれ振り分けることができます。

Issues

タスクの追跡やバグの報告に使用されます。
オープンソースの場合は機能のリクエストなどで用いられることもある。

Discussions

プロジェクトの方向性などについてみんなで議論する場所。
機能をオフにしているリポジトリもある。

おわりに

Git・GitHub はエンジニアにとって必須です。
Git では簡単にアカウントを複数持つことができるので
複数アカウントでプッシュしたりコミットしたりマージしたりすると
さらに勉強になるなと感じました。

Discussion