Dockerで複数 GitHub アカウントを簡単に運用 設定不要すぐ運用可能

2024/12/29に公開

概要

本記事では、Alpine Linux をベースにして最新バージョンの Git を含む軽量 Docker イメージを紹介します。
複数の GitHub アカウントを簡単に運用する方法の一例として、フォルダごとの .git/config やカスタム .gitconfig ファイルの活用法もあわせて解説します。

使い方

Docker Hub からプル

docker pull softjpn/git

ローカルディレクトリをマウントして Git を実行

ホスト側のカレントディレクトリを /app にマウントし、以下のように Git コマンドを実行します。

# git status
docker run --rm -it -v "$PWD:/app" softjpn/git status

# git add
docker run --rm -it -v "$PWD:/app" softjpn/git add -A .

# git commit
docker run --rm -it -v "$PWD:/app" softjpn/git commit -m "Your commit message"

# git push
docker run --rm -it -v "$PWD:/app" softjpn/git push origin main

代表的な Git コマンド例

  • clone
    docker run --rm -it -v "$PWD:/app" softjpn/git clone https://github.com/user/repo.git
    
  • branch, log, checkout
    # ブランチ一覧
    docker run --rm -it -v "$PWD:/app" softjpn/git branch
    
    # ログ確認
    docker run --rm -it -v "$PWD:/app" softjpn/git log --oneline --graph
    
    # ブランチ切り替え
    docker run --rm -it -v "$PWD:/app" softjpn/git checkout main
    
  • ブランチを新規作成して移動
    docker run --rm -it -v "$PWD:/app" softjpn/git checkout -b feature-branch
    
  • pull, merge, rebase
    docker run --rm -it -v "$PWD:/app" softjpn/git pull
    docker run --rm -it -v "$PWD:/app" softjpn/git merge feature-branch
    docker run --rm -it -v "$PWD:/app" softjpn/git rebase feature-branch
    
  • stash
    docker run --rm -it -v "$PWD:/app" softjpn/git stash
    docker run --rm -it -v "$PWD:/app" softjpn/git stash pop
    
  • tag
    docker run --rm -it -v "$PWD:/app" softjpn/git tag v1.0.0
    docker run --rm -it -v "$PWD:/app" softjpn/git push --tags
    

複数の GitHub アカウントを簡単に運用する方法

個人用と会社用など、複数の GitHub アカウントを使い分ける場合に便利な設定方法を紹介します。

1. リポジトリごとの .git/config を活用

各プロジェクトの .git/config に直接ユーザ情報を記述します。
たとえば、プロジェクトA の .git/config には以下のように設定。

[user]
  name = "YourNameForProjectA"
  email = "yourA@example.com"

プロジェクトB の .git/config は別のユーザ情報にするなど、フォルダ・リポジトリごとにアカウントを切り替えられます。

2. カスタム .gitconfig ファイルをマウント

「A というリポジトリはユーザAの設定」「B というリポジトリはユーザBの設定」というように、
専用の .gitconfig ファイルをプロジェクトごとに置いておく方法も有効です。

たとえば、

  • プロジェクトA のルートディレクトリに .gitconfig_A を用意
  • プロジェクトB のルートディレクトリに .gitconfig_B を用意

コンテナ実行時に、以下のように該当する設定ファイルを /root/.gitconfig としてマウントします。

docker run --rm -it \
  -v "$PWD:/app" \
  -v "$PWD/.gitconfig_A:/root/.gitconfig" \
  softjpn/git config --list

これで、そのコンテナからはユーザA として Git コマンドを実行できます。
別のプロジェクトでは .gitconfig_B をマウントしてユーザB として操作する、というように切り替えられます。


ビルド手順(ローカルでDockerイメージを作る場合)

リポジトリのソースコードをダウンロードして、自分のマシンでビルドしたい場合は以下を実行します。

git clone https://github.com/softjapan/git.git
cd git
docker build -t softjpn/git .

まとめ

  • 軽量・最新の Git イメージ: Alpine Linux ベースでイメージサイズを抑えつつ、最新の Git を使える。
  • 複数アカウント運用: フォルダごとの .git/config、あるいはカスタム .gitconfig を使うことで、複数の GitHub アカウント設定を簡単に切り替えられる。
  • ローカルへのインストール不要: Docker コンテナ内で Git 操作を行うので、ホスト環境を汚さずに開発を続けられる。

この手法を使えば、チーム内で統一した環境構築を行ったり、個人で複数アカウントを無理なく管理したりと、さまざまなシーンに応用できます。ぜひ活用してみてください。


<div align="center">
<strong>このコンテナで、複数アカウントの Git 運用を簡単に始めてみましょう!</strong>
</div>

Discussion