新しいGitリポジトリにコミット履歴を消した既存リポジトリ管理下のフォルダをコピーする方法について
概要
先日、既存プロジェクトをもとに、次のバージョンのプロジェクトを作成するタスクを任されたので、既存のものを新しいリポジトリにコピーして作業を進めていこうと思っています。その際に調べて試してみた手順を備忘録として残しておきます。
手順
既存のリポジトリをクローン
git clone リポジトリのurl
リモートリポジトリのurlを新しいリポジトリのものに変更
git remote set-url origin 新しいリポジトリのurl
新しいリモートリポジトリにプッシュ
git push origin 新しいリポジトリのurl
ここで、新しいリポジトリには既存プロジェクトのコミット履歴がすべて反映されてしまっているので、過去のコミットをリセットして1から始めていきます。
初回のコミットを削除
git update-ref -d HEAD
リモートリポジトリの内容を強制的に上書き
git push -f
ここで↓のエラーが出ます。
error: src refspec main does not main any
error: failed to push some refs to ‘https://github.com/.../.git’
対処法
git add .
git commit -m “something”
git push -f
いつもの要領でコミットまで行い、最後にfオプションでプッシュしておく。
fオプションがないとエラーが出ます。
これで新しいリモートリポジトリに、コミット履歴のない既存プロジェクトのコピーを管理できるようになりました。
参考
https://kitigai.hatenablog.com/entry/2019/08/06/003834
https://qiita.com/chimayu/items/3c21ddc597be4aa9de86
https://qiita.com/tokio_k_/items/a95229217ec7ea9186c5