Nov. 30, 2025
What I Learned 誤ってコミットされた機密情報(APIキー、秘密鍵、設定ファイルなど)は、通常の削除では Git の履歴に残り続ける。git filter-repo を使うことで Git の履歴を書き換え、機密情報を完全に削除できる。ただし、履歴から削除しても、すでに漏洩した認証情報が安全になるわけではないため、必ず該当する認証情報は失効・再発行する必要がある。
Details 背景 以前は git filter-branch を用いた方法が紹介されていたが、現在では公式ドキュメントにおいて注意喚起が行われており、新たに手順を作成する場合には git filter-repo の採用が推奨されている。
使用するツール git git filter-repo 作業前の注意点 本手順は履歴を書き換える破壊的操作である 共有リポジトリで実施する場合は、事前に関係者へ周知する 作業後は、全利用者に再クローンを依頼する ケース別手順 ケース1:特定のファイルを履歴から完全に削除する 1. ミラークローン
1git clone --mirror REMOTE_URL REPO_NAME.git 2cd REPO_NAME.git ミラークローンでは、すべてのブランチ・タグ・参照を含めて取得される。履歴を書き換えた結果をリモートへ正確に反映するため、本手順ではミラークローンを使用する。
2. 機密ファイルを履歴から削除
1git filter-repo \ 2 --path SENSITIVE_PATH_1 \ 3 --path SENSITIVE_PATH_2 \ 4 --invert-paths SENSITIVE_PATH_n:履歴から削除したいファイルのリポジトリ相対パス(複数指定可能) 3. リモートへ反映
1git push --force --all 2git push --force --tags ケース2:機密文字列(APIキー等)を履歴から削除・置換する 1. ミラークローン
1git clone --mirror REMOTE_URL REPO_NAME.
Nov. 28, 2025
What I Learned Git を初めて使う人や個人開発者向けに、GitHub などのリモートを使わずにローカルだけで Git を完結させる運用方法を整理した。Git は本来ローカルにすべての履歴を持つ仕組みなので、リモートを覚える前にローカル Git を理解した方が扱いやすく、混乱も少ない。ローカル内でもバックアップ(擬似リモート/ミラー)が可能である。
Details ローカルだけで Git を使うメリット 覚える概念が少なく学習しやすい 他人に迷惑がかからない Git の本質(変更履歴の管理)に集中できる 1. 基本操作とワークフロー 1-1. リポジトリ作成・状態確認 1git init 2git status 1-2. 変更を記録する流れ 1git add . 2git commit -m "作業内容" 1-3. 状態・履歴の確認 1git diff 2git log --oneline --graph --decorate 1-4. ブランチ操作 1git switch -c feature 2git switch main 3git branch -d feature 2. 過去バージョンに戻す(復旧コマンド) 2-1. ファイルだけ戻す 1git restore ファイル名 2-2. 直前のコミットを取り消す(作業内容は残す) 1git reset --soft HEAD^ 2-3.
Nov. 27, 2025
What I Learned 普段は Mac を使って開発しているが、最近 Windows ユーザーに開発を教える機会が増えた。そこで Windows での開発環境構築手順を整理した。WSL2 + Ubuntu + Git + VS Code の組み合わせで、Mac と同様の快適な Linux 開発環境が Windows 上に構築できる。仮想マシンよりも軽量で、Windows とのファイル共有もスムーズである。
Details 0. 前提条件 Windows 10(21H2 以降)または Windows 11 管理者権限のあるユーザー BIOS/UEFI で仮想化支援機能(Intel VT-x / AMD-V)が有効 インターネット接続 1. WSL2 のセットアップ 1-1. インストール PowerShell(管理者)で以下を実行:
1wsl --install 再起動を求められた場合は必ず再起動する。
1-2. Ubuntu のインストール確認 再起動後 PowerShell で:
1wsl -l -v Ubuntu が表示されない場合は手動インストール:
1wsl --install -d Ubuntu あるいは Microsoft Store から「Ubuntu」をインストールする。
1-3. Ubuntu 初回起動 初回起動時に以下を設定:
Nov. 19, 2025
What I Learned Pull Request 内の特定コミットから不要なファイル変更だけを取り除く方法を学んだ。git rebase -i と git commit --amend を組み合わせることで、履歴を綺麗に保ちながら、過去のコミットをピンポイントで修正できる。
Details 問題の状況 PR を作成して diff を確認したところ、あるコミットで意図しないファイルが誤って変更されていた:
D example/config.yaml (削除扱い) 特定の設定ファイルやドキュメントなど、関係のないものがコミットに含まれてしまうケースはよくある。このままでは PR が正しくレビューできないため、該当コミットだけを修正する必要があった。
解決方針 今回の目的は以下の通りである:
PR の他の変更部分には影響を与えない 問題のコミット"だけ"内容を修正する 履歴をきれいに保ち、不要な変更をなかったことにする 「削除 → 再追加」のようなノイズを残さない これを実現するために、git rebase -i を使って該当コミットを直接編集し、git commit --amend で内容を書き換える方法を選んだ。
実際の手順 Step 1: 対象コミットの親から rebase を開始 対象コミット ID を abcd1234 として:
1git rebase -i 'abcd1234^' rebase 用の画面が開き、次のような行が表示される:
pick abcd1234 Some commit message これを次のように書き換える:
edit abcd1234 Some commit message 保存すると、abcd1234 のコミットで処理が一旦停止する。
Nov. 5, 2025
What I Learned Git’s interactive rebase (git rebase -i) is a powerful tool for cleaning up commit history before pushing changes. It allows you to reorder, squash, edit, or remove commits.
Details Interactive rebase opens an editor with a list of commits and commands:
1git rebase -i HEAD~3 Available commands:
pick - use commit as-is reword - change commit message edit - stop for amending squash - combine with previous commit fixup - like squash but discard commit message drop - remove commit Example workflow: