😊

個人的Gitメモ

に公開

1. このメモについて

このメモは、Gitに関する個人的な備忘録です。以下の目的で作成しました:

  • Git操作の基本をまとめて、必要なときにすぐに参照できるようにする
  • 業務で毎日使用する状況ではないため、忘れがちな操作方法を記録しておく
  • AIやWeb検索に頼らず、自分用の整理された情報源として活用する

現状は「なんとなくGitがわかる」程度の理解度ですが、コマンドの意味や内部的な仕組みを忘れてしまうことが多いため、このメモを作成しました。今後、新たな学びがあれば随時このメモを更新していく予定です。

2. Gitの基本構造と概念

2.1 リポジトリの種類とその関係

ローカルリポジトリ

  • 自分のコンピュータ上に存在するリポジトリ
  • 作業ディレクトリ、ステージングエリア、リポジトリの3つの領域で構成
  • コミットやブランチ操作などの変更履歴管理が可能
  • オフラインでも作業可能

リモートリポジトリ

  • サーバー上に配置された共有リポジトリ
  • GitHub、GitLab、Bitbucketなどのサービスを利用
  • チーム開発のための共通作業場所として機能
  • バックアップの役割も担う

2.2 リポジトリ間の関係

image

2.3 Gitの内部構造と領域の関係

Gitは以下の領域でファイルとその変更を管理しています:

  1. プロジェクトディレクトリ

    • リポジトリ全体を含むフォルダ
    • .git サブディレクトリとワーキングディレクトリを含む
  2. ワーキングディレクトリ/作業ディレクトリ(Working Directory)

    • 実際にファイルを編集する場所
    • プロジェクトディレクトリ内の .git 以外の部分
  3. ステージングエリア(Staging Area)

    • コミットする変更を準備する場所
    • .git/index ファイルに保存
  4. ローカルリポジトリ

    • コミットされた変更の履歴を保存する場所
    • .git ディレクトリ内に保存
  5. コミット履歴

    • すべての確定した変更の連鎖
    • ローカルリポジトリ内に保存

3. Git管理の始め方(2パターン)

パターン1: 既存プロジェクトをGit管理下に置く

# Gitリポジトリを初期化
git init

# ファイルをステージングエリアに追加
git add .

# 最初のコミット
git commit -m "初期コミット"

# ローカルのGitリポジトリに「origin」という名前でリモートリポジトリへの参照(接続先)を追加
## origin:リモートリポジトリの標準的な名前(任意の名前を設定可能)
git remote add origin リモートリポジトリのURL

# ローカルの `main` ブランチの内容を、`origin` という名前で覚えさせたリモートサーバーに送信
## main:デフォルトブランチ名(GitHubの標準、旧来はmasterが一般的)
## -u:上流ブランチを設定し、今後のpush/pullを簡略化できる
git push -u origin main

パターン2: 既存のリモートリポジトリをクローン

# 1. リモートリポジトリをローカルに複製
git clone リモートリポジトリのURL

# 2. プロジェクトディレクトリに移動
cd リポジトリ名

# 3. 作業開始(ファイル編集など)

# 4. 変更をステージングエリアに追加
git add 変更したファイル

# 5. 変更をコミット
git commit -m "変更内容の説明"

# 6. リモートリポジトリに変更をプッシュ
git push

リポジトリの連携の仕組み

ローカルリポジトリとリモートリポジトリを連携させるには、「どのリモートリポジトリと通信するか」をローカルリポジトリに教える必要があります。これが git remote add コマンドの役割です。

git remote add origin https://github.com/username/repository.git

このコマンドは下記の意味を持ちます:

  • remote add: リモートリポジトリへの「参照」を追加する
  • origin: このリモートリポジトリに付ける名前(エイリアス)
  • URL: 実際のリモートリポジトリの場所

つまり、git remote add は「このURLにあるリポジトリをoriginという名前で記憶しておく」という指示です。これによりローカルとリモートの紐づけが完了し、以降は origin という短い名前で参照できるようになります。

この紐づけ情報は .git/config ファイルに保存され、以下のような形で記録されます:

[remote "origin"]
    url = https://github.com/username/repository.git
    fetch = +refs/heads/*:refs/remotes/origin/*

push と -u オプションの仕組み

git remote add でリモートリポジトリとの接続先を設定した後、実際にコンテンツを送信するために git push コマンドを使用します。特に最初のプッシュ時に -u オプションを付ける理由と効果を理解しておくと便利です。

git push -u origin main

わかりやすく言うと:

  • 「自分のパソコン(ローカル)の main ブランチの内容を、origin という名前で覚えさせたリモートサーバーに送信して」という命令です
  • 方向性で考えると「ローカル → リモート」への送信を意味します
  • フォーマットは git push <送信先の名前> <送信元のブランチ名> となります

このコマンドは下記の意味を持ちます:

  • push: ローカルの変更をリモートリポジトリに送信する
  • -u: upstream(上流)を設定する(--set-upstream の省略形)
  • origin: 送信先のリモートリポジトリ名
  • main: プッシュするローカルブランチ名と、対応するリモートブランチ名

-u オプションは、ローカルブランチとリモートブランチの紐づけ(追跡関係)を設定します。これにより以下のメリットがあります:

  1. 次回以降のコマンド省略: 一度 -u で設定すると、その後は単に git pushgit pull だけで同じブランチに対して操作が可能
  2. 状態確認の容易さ: git status で実行すると上流ブランチとの差分情報が表示される
  3. ブランチの追跡関係の明確化: どのローカルブランチがどのリモートブランチと関連付けられているかが明示的になる

この設定も .git/config ファイルに保存され、以下のような形で記録されます:

[branch "main"]
    remote = origin
    merge = refs/heads/main

git clone でリポジトリを複製した場合は、自動的に追跡ブランチの設定が行われるため、通常は -u オプションを指定する必要はありません。一方、git init から始めた場合は最初のプッシュ時に -u の指定が必要です。

4. よく使うGitコマンドまとめ

基本的な操作

コマンド 説明
git init 新しいGitリポジトリを初期化
git clone <URL> リモートリポジトリをローカルに複製
git status 作業ディレクトリの状態を確認
git add <ファイル> 変更をステージングエリアに追加
git commit -m "メッセージ" ステージングエリアの変更をコミット
git log コミット履歴を表示

ブランチ操作

コマンド 説明
git branch ブランチ一覧を表示
git branch <ブランチ名> 新しいブランチを作成
git checkout <ブランチ名> 指定したブランチに切り替え
git checkout -b <ブランチ名> ブランチを作成して切り替え
git merge <ブランチ名> 現在のブランチに指定したブランチをマージ

リモートリポジトリとの連携

コマンド 説明
git remote -v リモートリポジトリ一覧を表示
git remote add <名前> <URL> リモートリポジトリを追加
git fetch リモートの変更を取得(マージなし)
git pull リモートの変更を取得してマージ
git push ローカルの変更をリモートに送信
git push -u <リモート名> <ブランチ名> ブランチをリモートにプッシュして追跡設定

5. 参考リソース

書籍

その他のリソース

Discussion