🦍

「本当に使える」Git コマンドまとめ

に公開

Git には膨大な数のコマンドやオプションがありますが、実際の開発現場で頻繁に使うものは限られています。
今回は、日々の開発フローを回すために「これさえ覚えておけば十分」と言えるコマンドと、知っておくべき基礎知識をまとめました。

Git の基礎と設定ファイル

コマンドを実行する前に、Git がどのように動いているか、どこを見ているかの基礎をおさらいしておきます。

1.Git における重要な用語:originmain

Git を使う際に頻繁に出てくる 2 つの用語を理解することが重要です。

  • origin

    • デフォルトのリモートリポジトリ名です。
  • main(または master):

    • デフォルトのブランチ名です。

2. バージョン管理の始まり (.git ディレクトリ)

git init コマンドを実行すると、そのディレクトリ内に隠しフォルダである .git が作成されます。

  • このフォルダが作られた瞬間から、そのディレクトリ配下でバージョン管理が有効になります。
  • 逆に言えば、このフォルダを削除するとバージョン管理情報は消えます。

3. 設定ファイルの場所 (config)

Git の挙動やユーザー情報を決める設定ファイルは、主に以下の 2 箇所を見る必要があります。

  • .git/config:
    • プロジェクト固有の設定(リモートリポジトリの URL など)が書かれています。
  • ~/.gitconfig:
    • グローバルな設定が書かれています。
    • 主に「誰としてコマンドを実行するか(user.name, user.email)」といったユーザー情報がここに保存されます。

4. グローバル設定:ユーザー情報を登録する

Git を使い始める最初のステップは、グローバル設定に自分のユーザー情報を登録することです。このユーザー情報は、すべてのコミットに記録されます。

# ユーザー名を設定
git config --global user.name "Taro"

# メールアドレスを設定
git config --global user.email "Taro@example.com"

これらのコマンドを実行すると、~/.gitconfig ファイルに以下のような内容が書き込まれます:

# ~/.gitconfigの内容を確認
cat ~/.gitconfig

出力例:

[user]
    name = Taro
    email = Taro@example.com

確認方法:

# 現在の設定を確認
git config --global user.name
git config --global user.email

# すべてのグローバル設定を確認
git config --global -l

Tips:ディレクトリごとにユーザーを自動で切り替える

仕事用と個人用でメールアドレスを分けたいなど、ディレクトリごとに異なるユーザー情報を使い分けたい場合があります。そのような場合は、includeIf を使用して設定ファイルを分割できます。

~/.gitconfig

[includeIf "gitdir:/home/user_name/work/"]
    path = ~/.gitconfig-work

~/.gitconfig-work

[user]
    name = Your Work Name
    email = work.email@example.com

このように設定すると、/home/user_name/work/ ディレクトリ以下のプロジェクトでは、自動的に仕事用の認証情報が使用されます。

4. プロジェクト設定:リモートリポジトリを設定する

プロジェクトごとに、リモートリポジトリ(例:GitHub、GitLab など)の URL を設定する必要があります。

リモートリポを新規追加する

# リモートリポジトリを追加
git remote add origin https://github.com/username/repository.git
  • origin は、このリモートリポジトリに付ける名前です(慣例的に使われます)
  • URL は、あなたの GitHub リポジトリの URL に置き換えてください

リモートリポの URL を確認する

# リモートリポの一覧と URL を確認
cat .git/config

# または、より簡潔に確認
git remote -v

出力例:

origin  https://github.com/username/repository.git (fetch)
origin  https://github.com/username/repository.git (push)

リモートリポの URL を変更する

後から URL を変更する必要がある場合は、以下のコマンドを使用します:

# リモートリポの URL を変更
git remote set-url origin https://github.com/username/new-repository.git

または、.git/config ファイルを直接編集することもできます:

# .git/config を直接編集
cat .git/config  # 現在の内容を確認
# エディタで編集
vim .git/config

編集例:

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

現場で使う Git コマンド一覧

ここからは実務で頻出するコマンドの一覧です。
※前提として origin はデフォルトのリモートリポジトリ名main はデフォルトのブランチ名 としています。

コマンド例 内容
git push -u origin <branch_name>
-u--set-upstream の略
ローカルで作ったブランチをリモートにプッシュし、追跡関係を設定する
git fetch --all リモートにある全てのブランチから最新情報をフェッチする
git fetch origin <branch_name> リモートの <branch_name> ブランチの情報だけをローカルに仮反映(取得)する
git fetch --prune リモートで削除済みのブランチがローカルの追跡情報に残っている場合、それを削除(掃除)する
git merge origin/<branch_name> フェッチして仮反映されたリモート追跡ブランチの内容を、現在のローカルブランチに実反映(取り込み)する
git checkout -b <branch_name> origin/<branch_name> リモートブランチを元に新しいブランチを切り出す(自動的に追跡ブランチとして作成される)
git switch <branch_name> 作業するブランチを切り替える
git branch -r または git branch -a ブランチの一覧を表示する
-r: リモートのみ
-a: リモート含む全て
git branch -d <branch_name> マージ済みのローカルブランチ <branch_name> を削除する
git push origin --delete <branch_name> リモート上の <branch_name> ブランチを削除する
git reset --soft HEAD^ 直前のローカルコミットを 1 つ削除する(変更内容はステージングに残す)
git rebase -i HEAD~<n> 直前の n 個のコミットをインタラクティブに編集・整理する(コミットメッセージの修正や順序の変更など)

補足

多くの GUI ツールもありますが、トラブルシューティングや自動化の際はこのようにコマンドの挙動を理解していると非常に役立ちます。まずはこの表にある操作を迷わず打てるようになると、開発スピードがグッと上がります。

次回:git mergegit rebase の深掘り

このガイドでは基本的なコマンドを紹介しましたが、実務ではより複雑な状況が発生します。特に以下の 2 つのコマンドは、開発フローを大きく左右する重要な概念です。

  • git merge:コミット履歴をそのまま反映してブランチを統合する
  • git rebase:コミット履歴を整理し、より読みやすい履歴を作りながら統合する

次回は、これらのコマンドの詳しい仕組みと、実務での使い分けについて解説します。

Discussion