Git 運用ガイド:認証設定から競合解決までの実践手法

認証情報の管理と SSH 設定

Git リポジトリへのアクセスにおいて、認証情報の扱い方はセキュリティと利便性のバランスが重要です。グローバル設定で credential helper を利用する方法と、プロジェクトごとに SSH キーを使い分ける方法があります。

credential helper の設定

パスワードやトークンの入力を省略するために、以下のコマンドで情報を保存できます。

git config --global credential.helper store

URL への埋め込み(クローン時)

初回のクローン時に認証情報を URL に含めることも可能ですが、セキュリティリスクがあるため一時的な利用に限ります。

git clone https://admin_user:secure_token@gitlab.example.com/team/project-repo.git local_project

複数 SSH キーの使い分け

複数のアカウントやプロジェクトで異なる鍵を使用する場合、SSH 設定ファイルでホストエイリアスを定義します。

鍵の生成:

ssh-keygen -t ed25519 -C "work_email@company.com" -f ~/.ssh/id_ed25519_work

~/.ssh/config の編集:

Host git-workspace
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_work

クローンまたはリモート設定時には、実際のホスト名ではなく定義したエイリアスを使用します。

git clone git@git-workspace:organization/repository.git

ブランチ管理ワークフロー

機能開発における標準的なブランチ運用フローです。メインブランチを汚さずに作業を行い、完了後にマージします。

  1. 機能ブランチの作成:git checkout -b feature/login
  2. 開発とコミットを繰り返す
  3. メインブランチで緊急修正が必要な場合:git checkout main で移動し修正后进行コミット
  4. 機能ブランチに戻る:git checkout feature/login
  5. 開発完了後、メインブランチへマージ:git checkout main 後に git merge feature/login
  6. 不要になったブランチの削除:git branch -d feature/login

主要コマンドリファレンス

頻繁に使用する操作をカテゴリ別に整理します。

状態確認とログ

  • git status: working directory の状態を確認
  • git log:コミット履歴の表示
  • git diff:暫定されていない変更の確認
  • git diff --staged:ステージングされた変更の確認

ブランチ操作

  • git branch:ローカルブランチ一覧
  • git branch -a:すべてのブランチ一覧
  • git branch -r:リモートブランチ一覧
  • git checkout -b new_branch:新規ブランチ作成と移動
  • git branch -m old_name new_name:ブランチ名の改名
  • git branch -D branch_name:ブランチの強制削除

リモート操作

  • git remote add origin <url>:リモートリポジトリの登録
  • git push origin main:メインブランチのプッシュ
  • git push origin feature:develop:ローカルブランチをリモートの別名でプッシュ
  • git fetch:リモートの更新を取得(マージはしない)
  • git pull:取得とマージを同時に行う
  • git push origin :remote_branch:リモートブランチの削除

ファイル操作とスタッシュ

  • git add .:すべての変更をステージング
  • git rm file.txt:ファイルの削除(ワークツリーとインデックス)
  • git rm --cached file.txt:ファイルの削除(インデックスのみ)
  • git stash push:変更を一時的に退避
  • git stash pop:退避した変更を復元
  • git reset --hard:すべてのローカル変更を破棄

マージ競合の解決手順

プル操作時にローカルの変更とリモートの変更が衝突した場合の解決策略です。

策略 1:スタッシュを利用する方法

ローカルの変更を一時的に退避し、リモートの変更を取り込んでから復元します。

  1. 変更を退避:git stash save "work_in_progress"
  2. リモート更新:git pull
  3. 変更を復元:git stash apply stash@{0}
  4. 競合ファイルを編集して解決
  5. 解決後、追加とコミット:git add . 及び git commit -m "resolve conflict"
  6. リモートへプッシュ:git push

策略 2:コミット後にマージする方法

ローカルの変更を先にコミットしてからプルを行い、競合を解決します。

  1. エラー発生時、まずローカル変更をコミット:git add db_config.yaml
  2. コミット実行:git commit -m "local config update"
  3. プル実行:git pull
  4. 競合発生時、ファイル内のマーカー(<<<<<<< HEAD, =======, >>>>>>>)を確認
  5. 必要なコードを残し、マーカーを削除して保存
  6. 再追加とコミット:git add db_config.yaml 及び git commit -m "merge complete"
  7. 最終プッシュ:git push

タグ: Git ssh-configuration conflict-resolution branch-workflow command-line

9月10日 15:10 投稿