ローカルをGitから切り離す手順
傍観者k
投稿日: 2026年03月10日 08:13
# ローカルをGitから切り離す手順
## 概要
このドキュメントは、ローカルリポジトリを“元のリモート(例:GitHub)”との関係から切り離す際の手順と注意点をまとめたものです。目的に応じて「履歴を破棄して純粋なコードへする方法」と「履歴は残して別のリポジトリへ移す方法(推奨)」の2通りを説明します。
---
## 方法A:履歴を捨てて純コードにする(最速)
履歴(コミットログ)を気にせず、今あるコードだけを取り出したい場合に使います。
1. プロジェクトルートで `.git` ディレクトリを削除する。
- macOS / Linux:
```bash
rm -rf .git
```
- PowerShell (Windows):
```powershell
Remove-Item -Recurse -Force .git
```
- cmd (Windows):
```cmd
rmdir /S /Q .git
```
2. 必要なら `.gitignore` を確認して削除または編集する(旧リポジトリ向けのルールが残っていることがあるため)。
3. 新しいリポジトリとして扱いたい場合は再初期化してコミットする:
```bash
git init
git add .
git commit -m "Initial commit (imported code)"
```
注意点:この方法ではすべての履歴が失われます。履歴を残したい場合は方法Bを使ってください。
---
## 方法B:履歴を保持したまま別リポジトリへ移す(推奨)
元のリモートとの関連を切って、新しい GitHub(または他のホスティング)リポジトリへアップロードしたい場合に使います。
基本コマンド例:
```bash
# 現在のリモートを確認
git remote -v
# 既存の origin を削除(任意)
git remote remove origin
# もしくは URL を差し替える
git remote set-url origin https://github.com/ユーザ名/新リポジトリ.git
# 新しいリモートを追加する場合
git remote add origin https://github.com/ユーザ名/新リポジトリ.git
# 現在のブランチ名を確認し、push
git branch --show-current
git push -u origin main # または master、実際のブランチ名を使用
# 全ブランチ・タグを移す場合
git push --all origin
git push --tags origin
```
補足:
- 既存のリモートを一度削除して再追加するか、`git remote set-url` で差し替えるかは好みです。
- リモートのデフォルトブランチ名(`main` / `master`)を確認してから push してください。
---
## よく見逃される“残り物”と手動で確認すべき箇所
`.git` を削除しても、コードベースや設定ファイルの中に旧リポジトリを示す参照が残っていることがあります。以下を確認・修正してください。
- `README.md`:旧リポジトリへのリンク、バッジ(Badge)を更新または削除。
- CI/CD 設定:`.github/workflows/` や他のCI設定に旧パスや古いトークンが書かれていないか。
- パッケージ管理ファイル:`package.json` の `repository`、`go.mod`、`composer.json`、`pyproject.toml` など。
- サブモジュール:`.gitmodules` が存在する場合は参照を整理。
- ライセンス:`LICENSE` に記載された著者名やプロジェクト名を必要に応じて更新。
- ドキュメント中の URL:ソースコード中やドキュメントに直書きされた旧リポジトリの URL を検索して置換。
- Git フック/認証情報:もし `.git` を残す運用であれば、`.git/hooks` や `.git/credentials` などに秘密情報が残っていないか確認。
検索例(リポジトリ内を一括検索):
```bash
grep -R "github.com/古いユーザ" .
# Windows (PowerShell)
Select-String -Path * -Pattern "github.com/古いユーザ" -Recurse
```
---
## 追加の注意点・運用メモ
- 履歴から機密情報や大きなファイルを完全に除去したい場合は、BFG Repo-Cleaner や `git filter-repo` などの専用ツールを使用してください。単に `.git` を削除するだけでは履歴を維持したままの「修正」はできません。
- 新リポジトリへ push する際、既存の同名ブランチがリモートにあり衝突する場合は `--force` が必要な場面があります。ただし履歴を書き換えることになるため注意して実行してください。
- 元リポジトリと明確に切り離したい場合は、ファイル中の著作権表記やドキュメントでの参照も忘れずに更新してください。
---
## まとめ(推奨)
- 単にコードだけ欲しい:方法A(`.git` を削除)
- 履歴は残したいが別場所へ移したい:方法B(リモート差し替え) — 通常はこちらを推奨
- 旧リポジトリへの参照(README、CI、パッケージ設定等)は手動で検索して更新
- 機密情報除去や履歴の部分削除が目的なら専用ツールを利用