Git勉強会

Git勉強会の講習の部へようこそ!
この勉強会は, この講習の部演習の部の2つの部分から構成されています. 本日の講習の部では, Gitの基本的な使い方を学びます.
それでは, 早速始めましょう!

GitとGitHubの基本概念

皆さんはGitを聞いたことがありますか?
Gitはバージョン管理システムの一つで, プログラムのソースコードや文書の変更履歴を管理するためのツールです. Gitを使うことで, 複数人での開発を行う際に, 誰が何を変更したかを管理することができます. また, Gitを使うことで, 過去の状態に戻すこともできます. Gitは企業などでも使われている, プログラマにとって非常に重要なツールです.
この講習では, Gitを扱う上で必要となる基本的な7つの操作について学びます.

1. Gitとは何か

バージョン管理システムの概要

  • バージョン管理システムとは、ファイルの変更履歴を記録し、管理するためのシステムです。
  • 複数人での共同作業や、過去の状態に戻したりすることが簡単にできます。

なぜGitが必要か

  • 変更履歴の追跡: いつ、誰が、どのような変更を行ったかを記録します。
  • バックアップと復元: 過去のバージョンに戻したり、特定の状態を復元できます。
  • 共同作業の効率化: 複数人での同時開発がスムーズに行えます。

Gitの特徴

  • 分散型バージョン管理システム: Gitは中央サーバーだけでなく、各開発者のローカルにもリポジトリを持ちます。
  • 軽量ブランチ: ブランチの作成や切り替えが高速で簡単です。
  • 強力なマージ機能: 複数の変更を統合するマージ操作が強力です。

2. GitHubとは何か

GitHubの概要

  • GitHubは、Gitリポジトリをホスティングするウェブサービスです。
  • Gitの機能をクラウド上で提供し、プロジェクトの公開や共同作業を容易にします。

GitHubの主な機能

  • リモートリポジトリ: プロジェクトをインターネット上でホスティングし、どこからでもアクセス可能。
  • コラボレーションツール: プルリクエスト、Issue、Wikiなどの共同作業ツールを提供。
  • プロジェクト管理: プロジェクトの進捗や課題管理が容易に行えます。

3. GitとGitHubの違い

Gitの役割

  • ローカル操作: ローカルマシン上でのファイルのバージョン管理。
  • コミットとブランチ管理: ローカルでのコミットやブランチ操作が可能。

GitHubの役割

  • リモート操作: リモートリポジトリでの管理と共有。
  • 共同作業の場: チームでのプロジェクト共有や共同作業が可能。

GitとGitHubの連携

  • リポジトリのクローン: GitHubのリポジトリをローカルにコピーする(git clone)。
  • 変更のプッシュ: ローカルの変更をGitHubのリポジトリに反映する(git push)。
  • 変更のプル: GitHubのリポジトリの変更をローカルに取り込む(git pull)。

Gitを使う下準備

まず, Gitを使うために必要な下準備を行います.

  1. GitHubに登録
  2. Gitクライアントのインストール
  3. Forkのインストール

GitHubに登録

今回はリポジトリの管理にGitHubというサイトを利用します. GitHubはクラウドベースのGitリポジトリを提供するサービスで無料で利用することができます.
それでは早速, GitHubに登録しましょう!

  1. GitHubのホームページにアクセス
  2. 右上のSign upをクリック
  3. 指示に従ってメールアドレスやらなんやらを登録
  4. 確認コードを入力
  5. 完了! GitHubの画像

Gitクライアントのインストール

Windowsへのインストール

  1. Git公式サイトからWindows用のインストーラーをダウンロードします。
  2. ダウンロードしたインストーラーを実行し、画面の指示に従ってインストールします。

Macへのインストール

  1. ターミナルを開きます。
  2. 以下のコマンドを実行してHomebrewを使用してインストールします。
    brew install git
    

Linuxへのインストール

  1. ターミナルを開きます。
  2. ディストリビューションに応じて以下のコマンドを実行します。
    • Debian/Ubuntu系:
      sudo apt-get install git
      
    • Fedora:
      sudo dnf install git
      

Gitを使うためには, まずGitクライアントをインストールする必要があります. Gitのダウンロードページからダウンロードして, ダウンロードしたファイルを開いて指示に従ってインストールしてください. Gitの画像

Forkのインストール

Gitは本来コマンドを用いて操作を行うものですが, コマンドを最初から扱うのはハードルが高いので, GUIで操作ができるForkというソフトを利用します.
Forkのダウンロードページからダウンロードして, ダウンロードしたファイルを開いて指示に従ってインストールしてください.
(Linuxを使っている人は残念ながら使えないです... 大人しくCLIで頑張りましょう!) Forkの画像

本日のおしながき

  • リポジトリをclone(クローン)してみよう
  • branch(ブランチ)を切ってみよう
  • 変更をstage(ステージ)してみよう
  • 変更をcommit(コミット)してみよう
  • push(プッシュ)してみよう
  • pull request(プルリクエスト)を出してmerge(マージ)してみよう
  • pull(プル)してみよう

Gitの基本操作

リポジトリのクローン

クローンの概要

  • クローン(clone) は、リモートリポジトリのコピーをローカルマシンに作成する操作です。
  • クローンを行うことで、リポジトリの全履歴、すべてのブランチ、タグ、ファイルがローカル環境に複製されます。

クローンの利点

  • リモートリポジトリと同じ環境をローカルで持つことができ、開発やテストが容易になります。
  • ネットワークに接続していなくても、ローカルで作業を続けることができます。
  • チーム全員が同じリポジトリの状態から開発を開始できるため、作業の一貫性が保たれます。

Fork

  1. File > Clone を選択します。 Fork-Clone
  2. Repository UrlにクローンしたいリポジトリのURLを入力します。今回はhttps://github.com/tuatmcc/GitLectureRepo.gitを入力してください。 Fork-Clone

コマンド

  1. GitHubにアクセスし、クローンしたいリポジトリのURLをコピーします。
  2. ターミナルまたはコマンドプロンプトを開きます。
  3. リポジトリをローカルにクローンします。今回はhttps://github.com/tuatmcc/GitLectureRepo.gitを入力してください。
    git clone <クローンしたいリポジトリのURL>
    

リポジトリのクローン

Gitの基本操作

ブランチの作成と切り替え

<GitHubのアカウント名>の部分は自分のGitHubのアカウント名に置き換えてください

ブランチの概要

  • ブランチ(branch) は、リポジトリ内で独立した開発ラインを作成するための機能です。
  • ブランチを使用すると、メインの開発ラインに影響を与えずに新機能の追加やバグ修正を行うことができます。
  • 各ブランチは、リポジトリのスナップショットを表し、他のブランチとは独立して進化させることができます。

ブランチの利点

  • 安全な開発環境を提供し、メインのコードベースに影響を与えない。
  • 複数の機能や修正を同時に並行して開発できる。
  • コードレビューやテストのために、変更を簡単に分離できる。

Fork

  1. Branchボタンを押します。 Fork-Branch
  2. Branch namedev/feature/<GitHubのアカウント名>を入力します。 Fork-branch

コマンド

  1. 新しいブランチを作成します。
    git branch dev/feature/<GitHubのアカウント名>
    
  2. 作成したブランチに切り替えます。
    git switch dev/feature/<GitHubのアカウント名>
    

ブランチの作成と切り替え

Gitの基本操作

ファイルの追加とステージング

ステージの概要

  • ステージ(stage) は、Gitにおけるファイルの変更を次のコミットに含めるための一時的な領域です。
  • ステージングエリアとも呼ばれ、次に行うコミットにどのファイルが含まれるかを指定する場所です。

ステージの利点

  • 部分的なコミット: ファイル全体ではなく、特定の変更だけをコミットに含めることができます。
  • コミットの準備: 複数の変更をまとめてコミットする前に、ステージングエリアで確認できます。
  • 変更の管理: 大規模な変更を小分けにしてコミットする際に便利です

Fork

  1. Local Changesを押します。
  2. ステージしたいファイルまたはフォルダを選択してStageを押します。(フォルダを選択するとフォルダ内のすべてのファイルがステージされます)
    今回はVSCodeで適当なファイルを追加してそれを選択してください。 Fork-stage

コマンド

  1. プロジェクトディレクトリに新しいファイルを作成します。
    echo "Hello, Git!" > hello.txt
    
  2. ファイルをステージングエリアに追加します。
    git add hello.txt
    

Stage

Gitの基本操作

コミットの作成

コミットの概要

  • コミット(commit) は、ステージングエリアにある変更をリポジトリに記録する操作です。
  • 各コミットは、一つのスナップショット(あるいはバージョン)を作成し、プロジェクトの履歴として保存されます。

コミットの利点

  • 変更の追跡: コミットは、変更の履歴を詳細に追跡します。これにより、誰が、いつ、どのような変更を行ったかを確認できます。
  • バージョン管理: プロジェクトの特定の状態に戻したり、特定のバージョンを再現したりすることができます。
  • 共同作業の管理: チームメンバーがそれぞれの作業を独立して行い、その結果を統合するための基盤を提供します。

Fork

  1. Commit subjectにコミットのタイトルを入力します。(Descriptionにはコミットの説明を入力することができますが、なるべくタイトルで分かるようにしましょう)
  2. Commit * Fileを押します。
    このときStagedの下にあるファイルまたはフォルダがコミットされます。 Fork-commit

コマンド

  1. ステージングエリアの変更をコミットします。
    git commit -m "コミットメッセージ"
    

Commit

Gitの基本操作

リモートリポジトリへのプッシュ

プッシュの概要

  • プッシュ(push) は、ローカルリポジトリのコミット履歴をリモートリポジトリに送信し、反映させる操作です。
  • プッシュを行うことで、他のチームメンバーと変更内容を共有し、共同開発を進めることができます。

プッシュの利点

  • 変更の共有: ローカルリポジトリで行った変更をリモートリポジトリに反映し、チーム全員が最新のコードにアクセスできるようになります。
  • 共同作業の促進: プッシュを通じて、複数の開発者が同じリポジトリで並行して作業し、成果物を統合することが容易になります。
  • バックアップの作成: ローカルの変更をリモートに保存することで、ローカルデータの損失リスクを軽減します。

Fork

  1. Pushを押します。 Fork-push
  2. もう一度Pushを押します。 Fork-push

コマンド

  1. ローカルのコミットをリモートリポジトリにプッシュします。
    git push origin feature/new-feature
    

Push

Gitの基本操作

Pull Requestの作成 & マージ

ここからの操作はGitHub上で行います。

プルリクエストの概要

  • プルリクエスト(Pull Request) は、GitHubやGitLabなどのホスティングサービス上で行われる、変更の提案とレビューのプロセスです。
  • プルリクエストを通じて、あるブランチで行った変更を別のブランチに統合(マージ)するようリクエストします。

プルリクエストの利点

  • コードレビュー: プルリクエストを通じて、他の開発者が変更を確認し、フィードバックを提供できます。
  • 品質管理: プルリクエストは、バグの検出やコード品質の向上に役立ちます。

マージの概要

  • マージ(merge) は、別のブランチの変更を現在のブランチに統合する操作です。
  • マージを行うことで、複数の開発ラインで行われた変更を一つのブランチに集約します。

マージの利点

  • 変更の統合: 分散して行われた変更を一つにまとめ、プロジェクト全体の整合性を保つことができます。
  • 分散開発の促進: 複数の開発者が並行して作業し、その結果を容易に統合できます。
  • 透明性: プロジェクト全体で変更内容とその議論を記録として残せます。

プルリクエストの作成

  1. GitHubにアクセスし、対象のリポジトリ(今回はGitLectureRepo.git)を開きます。
  2. リポジトリのトップページで、「Pull requests」タブをクリックします。
  3. 「New pull request」ボタンをクリックします。 PullRequest
  4. base:maincompare: に自分の作成したブランチ(dev/feature/<GitHubのアカウント名>)が設定されていることを確認します。 PullRequest
  5. 変更内容を確認し、必要に応じてコメントを追加します。
  6. 「Create pull request」ボタンをクリックしてプルリクエストを作成します。 PullRequest

マージの方法

  1. プルリクエストのページで「Merge pull request」ボタンをクリックします。 Merge
  2. 「Confirm merge」ボタンをクリックしてマージを完了します。(本来はここで他のプログラマーなどからコードレビューを行ってもらいます) Merge

Gitの基本操作

リモートの変更をローカルに反映する (Pull)

プルの概要

  • プル(pull) は、リモートリポジトリの変更をローカルリポジトリに取り込む操作です。
  • プルは、リモートリポジトリから最新のコミットを取得し、ローカルブランチに反映する一連の操作を行います。

プルの利点

  • 最新の状態に更新: プルを行うことで、リモートリポジトリの最新の変更をローカルリポジトリに取り込むことができます。
  • 共同作業の促進: 他のチームメンバーが行った変更を自分の作業環境に反映させることで、共同作業を円滑に進めることができます。
  • コンフリクトの早期解決: プルを頻繁に行うことで、他のメンバーの変更とのコンフリクトを早期に検出し、解決することができます。

Fork

  1. Pullを押します。 Fork-pull
  2. もう一度Pullを押します。 Fork-pull

コマンド

  1. メインブランチに切り替えます。
    git checkout main
    
  2. リモートリポジトリの変更をローカルリポジトリに反映します。
    git pull origin main
    

Pull

終わりに

この講習会では次の内容を扱いました。

  • clone: リポジトリをGitHubからコピーする
  • branch: 開発単位を分割する
  • stage: 変更をGitに登録する
  • commit: 変更をローカルのリポジトリに反映する
  • push: 変更をGitHubのリポジトリに反映する
  • pull request: 変更の提案とコードレビューを行う
  • merge: ブランチの変更を別のブランチに反映する

今回の講習は以上で終了です。お疲れさまでした! この講習の続きとしてGit演習会を近々開催予定なので今回学んだ知識を利用してより実践的なGitの利用を行ってみたい人はこちらにもぜひご参加ください!