現在のコミットを Git リポジトリ内の唯一の (最初の) コミットにしますか? 質問する

現在のコミットを Git リポジトリ内の唯一の (最初の) コミットにしますか? 質問する

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

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

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

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

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

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

ベストアンサー1

これはブルートフォースアプローチです。リポジトリの構成も削除されます。

注意: リポジトリにサブモジュールがある場合は動作しません。サブモジュールを使用している場合は、例えば次のようにします。インタラクティブリベース

ステップ 1: すべての履歴を削除します (バックアップがあることを確認してください。元に戻すことはできません)

cat .git/config  # save your <github-uri> somewhere
rm -rf .git

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

ステップ2の前に設定をまだ行っていない場合は、現在の例のように選択してinit.defaultBranch設定してください。git config --global init.defaultBranch <branch-name>main<branch-name>

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

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

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

おすすめ記事