1. ホーム
  2. git

[解決済み] Git リポジトリで現在のコミットを唯一の(初期)コミットにする?

2022-03-22 11:42:05

質問

現在、ローカルのGitリポジトリを持っていて、それをGithubのリポジトリにプッシュしています。

ローカルリポジトリには ~10 コミットがあり、Github リポジトリはこれと同期した複製です。

そこで、ローカルの Git リポジトリからすべてのバージョン履歴を削除し、現在のリポジトリの内容が唯一のコミットとして表示されるようにします (したがって、リポジトリ内のファイルの古いバージョンは保存されません)。

そして、この変更をGithubにプッシュしたいと思います。

Gitのリベースについて調べてみましたが、これは特定のバージョンを削除するのに適しているようです。 もうひとつの解決策は、ローカルリポジトリを削除して新しいリポジトリを作成することですが、これはおそらく多くの作業を必要とするでしょう。

ETA: 追跡されていない特定のディレクトリ/ファイルがあります。可能であれば、これらのファイルの追跡解除を維持したいのですが。

解決方法は?

ここでは、ブルートフォースアプローチを紹介します。また、リポジトリの設定も削除されます。

備考 : リポジトリにサブモジュールがある場合、これは機能しません! もしサブモジュールを使っているのなら、例えば 対話型リベース

ステップ1:すべての履歴を削除する ( バックアップをとっていることを確認してください。 )

cat .git/config  # note <github-uri>
rm -rf .git

ステップ2: Git リポジトリを現在のコンテンツだけで再構築する

git init
git add .
git commit -m "Initial commit"

ステップ3:GitHubにプッシュします。

git remote add origin <github-uri>
git push -u --force origin master