認証情報の管理と 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
ブランチ管理ワークフロー
機能開発における標準的なブランチ運用フローです。メインブランチを汚さずに作業を行い、完了後にマージします。
- 機能ブランチの作成:
git checkout -b feature/login - 開発とコミットを繰り返す
- メインブランチで緊急修正が必要な場合:
git checkout mainで移動し修正后进行コミット - 機能ブランチに戻る:
git checkout feature/login - 開発完了後、メインブランチへマージ:
git checkout main後にgit merge feature/login - 不要になったブランチの削除:
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:スタッシュを利用する方法
ローカルの変更を一時的に退避し、リモートの変更を取り込んでから復元します。
- 変更を退避:
git stash save "work_in_progress" - リモート更新:
git pull - 変更を復元:
git stash apply stash@{0} - 競合ファイルを編集して解決
- 解決後、追加とコミット:
git add .及びgit commit -m "resolve conflict" - リモートへプッシュ:
git push
策略 2:コミット後にマージする方法
ローカルの変更を先にコミットしてからプルを行い、競合を解決します。
- エラー発生時、まずローカル変更をコミット:
git add db_config.yaml - コミット実行:
git commit -m "local config update" - プル実行:
git pull - 競合発生時、ファイル内のマーカー(<<<<<<< HEAD, =======, >>>>>>>)を確認
- 必要なコードを残し、マーカーを削除して保存
- 再追加とコミット:
git add db_config.yaml及びgit commit -m "merge complete" - 最終プッシュ:
git push