このツールは、既存の複数Gitリポジトリでcore.autocrlf=falseへの無効化とGitキャッシュの一括クリアを安全かつ簡単に行うためのツールです。
- 安心: コミット作業不要、全自動で安全にautocrlf無効化+キャッシュクリア
- シンプル: バッチファイルは1つだけ
- 安全: 変更は自動スタッシュ、差分があればHEADで上書き
- 一括処理: 複数リポジトリを一度にautocrlf無効化+キャッシュクリア
各リポジトリに対して以下の処理を自動で実行します:
- .gitフォルダバックアップ - 安全のため.gitフォルダをバックアップ
- 変更確認 - 未コミットの変更を検出
- 自動スタッシュ - 変更がある場合は自動でスタッシュ保存
- autocrlf無効化 -
core.autocrlf=falseを設定 - Gitキャッシュ一括クリア -
git rm --cached -r .でキャッシュをクリア - HEADリセット -
git reset --hard HEADでワーキングディレクトリをHEADの状態に復元 - 整理 - 一時的に生成されたファイルのみを整理(重要なファイルは保護されます)
コミット作業は一切不要です。すべて自動で安全にautocrlf無効化+キャッシュクリアが完了します。
git-maintenance/
├── git-autocrlf-disable-cache-clear.bat # メインツール(autocrlf無効化+キャッシュクリア)
├── setup.bat # 初回セットアップスクリプト
├── restore-git.bat # .git復旧ツール
├── conf/ # 設定ファイル(個人環境用)
│ ├── config.txt.sample # 設定ファイルのサンプル
│ └── repositories.txt.sample # リポジトリリストのサンプル
├── log/ # ログファイル(実行時に自動作成)
├── backup/ # .gitフォルダバックアップ(実行時に自動作成)
├── .gitignore # Git管理対象外ファイル
└── README.md # このファイル
setup.bat を実行すると、ディレクトリ作成と設定ファイル作成が一度に完了します。
- ディレクトリ作成と設定ファイルコピー
mkdir conf
mkdir log
mkdir backup
copy conf\config.txt.sample conf\config.txt
copy conf\repositories.txt.sample conf\repositories.txt- 設定ファイルの編集
conf\config.txt を編集して、複数のGitリポジトリが配置されているベースディレクトリを指定します。
BASE_DIR=D:\projects
# 7z.exeのパス(バックアップ圧縮用)
# 7-Zipを使用すると大幅にバックアップサイズを削減できます
# 例: C:\Program Files\7-Zip\7z.exe
# 空白または存在しないパスの場合はxcopyによるフォルダコピーを使用
SEVENZIP_PATH=C:\Program Files\7-Zip\7z.exe- リポジトリリストの編集
conf\repositories.txt を編集して、処理対象のリポジトリ名(フォルダ名)を列挙します。
# コメント行は # で始める
my-web-app
my-api-server
my-desktop-app- ツールの実行
git-autocrlf-disable-cache-clear.bat をダブルクリックして実行します。
実行時に以下のメニューが表示されます:
1. AutoCRLF無効化+キャッシュクリア実行 ← メイン機能
2. リポジトリ情報確認 ← 実行前の確認用
3. スタッシュ一覧表示 ← スタッシュ確認用
4. git-autocrlf-disable関連スタッシュ復元 ← 元に戻したい時
5. 終了
メイン機能です。すべて自動でautocrlf無効化+キャッシュクリア処理されます。
実行前にリポジトリの状態を確認できます。
- ブランチ情報
- 現在のautocrlf設定
- 未保存変更の有無
- スタッシュの数
各リポジトリのスタッシュ状況を確認できます。
このツールで作成されたスタッシュを復元できます。
- データ損失なし: 変更は自動でスタッシュに保存されます
- 元に戻せる: スタッシュ復元機能で元の状態に戻せます
- キャッシュクリア:
git rm --cached -r .でGitキャッシュを一括クリア - HEADリセット:
git reset --hard HEADで改行コード変更による差分を自動解決 - 安全な整理: 重要なファイルは保護され、一時ファイルのみが整理されます
- .gitバックアップ: 万が一に備えて.gitフォルダを自動バックアップ
- 7z圧縮対応: 7-Zipを使用してバックアップサイズを大幅削減(オプション)
- 整合性チェック: 復旧時にgit fsckによるリポジトリ整合性確認
- 詳細なエラー処理: 各段階でのエラー検出と分かりやすい対処法提示
実行時に以下の場所にログファイルが生成されます:
log/git-autocrlf-disable-cache-clear_YYYYMMDD_HHMMSS.log
実行時に以下の場所に.gitフォルダのバックアップが作成されます:
7-Zip使用時(推奨):
backup/リポジトリ名_YYYYMMDD_HHMMSS.7z
フォルダコピー時:
backup/リポジトリ名_YYYYMMDD_HHMMSS/
7-Zipを使用すると、大容量リポジトリでもバックアップサイズを大幅に削減できます。
A: メニューの「4. git-autocrlf-recovery関連スタッシュ復元」を選択してください。
A: 改行コードが変更されるテキストファイル全般ですが、HEADリセットにより自動で元の状態に戻されます。
A: 一切不要です。すべて自動で処理されます。
A: はい。変更は自動でスタッシュに保存され、いつでも元に戻せます。
A: 自動作成されたバックアップ(backup/リポジトリ名_日時/)から復旧できます。詳細は「緊急時の復旧手順」をご参照ください。
A: メイン処理(モード1)実行時に、各リポジトリの処理開始前に自動作成されます。
A: いいえ。7-Zipが設定されていない場合は自動的にxcopyを使用します。ただし、7-Zipを使用すると大幅にバックアップサイズを削減できます。
A: ツールが自動的に詳細な対処法を表示します。「このツールが提供する対処法」と「一般的なトラブルシューティング」を参考にしてください。
- ログファイルを確認してください
- 「リポジトリ情報確認」で状態をチェックしてください
- 必要に応じて「スタッシュ復元」で元に戻してください
conf\config.txt.sampleをコピーしてconf\config.txtを作成してくださいconf\repositories.txt.sampleをコピーしてconf\repositories.txtを作成してください
conf\config.txtのBASE_DIRパスを確認してください
- コマンドプロンプトで
chcp 932を実行してから再実行してください
万が一、.gitフォルダに問題が発生した場合、自動作成されたバックアップから復旧できます。
# 復旧ツールを使用(対話式)
restore-git.bat# backupフォルダ内のバックアップを確認
dir backup
# 例: sample-repo_20250714_143022 のようなフォルダが存在# 対象リポジトリに移動
cd D:\projects\sample-repo
# 現在の.gitフォルダを退避(念のため)
move .git .git_broken# git-maintenanceフォルダから実行
# xcopyで.gitフォルダを復元
xcopy "backup\sample-repo_20250714_143022" "D:\projects\sample-repo\.git" /E /I /H /Y# 対象リポジトリで状態確認
cd D:\projects\sample-repo
git status
git log --oneline -5- 復旧が成功したら
.git_brokenフォルダを削除 - 復旧が失敗した場合は
.git_brokenを.gitに戻して他の方法を検討
複数のリポジトリで問題が発生した場合の復旧バッチファイルの例:
@echo off
set "BACKUP_BASE=D:\path\to\git-maintenance\backup"
set "PROJECT_BASE=D:\projects"
# 各リポジトリに対して復旧処理
for /d %%d in ("%BACKUP_BASE%\*") do (
for /f "tokens=1,2 delims=_" %%a in ("%%~nd") do (
set "REPO_NAME=%%a"
echo 復旧中: !REPO_NAME!
if exist "%PROJECT_BASE%\!REPO_NAME!" (
xcopy "%%d" "%PROJECT_BASE%\!REPO_NAME!\.git" /E /I /H /Y
)
)
)- バックアップは実行時に自動作成されます
- 複数のバックアップが残るため、適切なタイムスタンプのものを選択してください
- 復旧前に現在の状態を退避することを強く推奨します
- 復旧後は必ずgit statusで状態確認を行ってください
- リモートリポジトリとの同期が必要な場合があります
- タグをプッシュ:
git tag v1.0.0 && git push origin v1.0.0 - GitHub Actionsが自動でリリースを作成
create-release.batを実行してリリース用zipファイルを作成- GitHubでタグとリリースを手動作成
- 生成されたzipファイルをリリースページにアップロード
.github/workflows/release.yml により、v* タグプッシュ時に自動でリリースが作成されます:
- リリース用zipファイルの自動生成
- 不要ファイル(.git、ログ、バックアップ等)の除外
- GitHubリリースページの自動作成
- リリースノートテンプレートの適用
Created by vemic