githubから落としてきたブランチには、リモートの追跡ブランチとかタグとかがいろいろついてきて、show-branch
とかするときにうざい。
ログとかもcloneした時点で大量に残ってて、プロジェクトを始めるには何かと目障りなものです。
(もちろん、コミッターとして開発に参加する場合には重要な履歴になるのですが…)
リモート追跡ブランチの削除
git remote にはpruneという便利なサブ(サブ)コマンドがあるので、存在しないリモート追跡ブランチを全部きれいに消してくれるそうな。
なので、cloneしてきた後に,clone元リポジトリからの接続を切り離してpruneしてやればいい。
$ git remote set-url origin <some_url>
$ git remote prune origin
ずっと手動で消してた…
開発初期で特にリモートが見つからない場合には、<some_url>
には.
を登録しとけばいいと思います。
ログの削除
とりあえずdev
として空のブランチを作る。
$ git checkout --orphan dev
ここでsquash mergeすればいいものだと思ってたら、どうやらそういうわけにも行かないみたい。
素直にaddしてcommitする。
$ git add .
$ git commit -m first_commit
masterブランチに強制統合
$ git push -f . dev:master
$ git gc --aggressive
これで完了。プロジェクトの履歴はなくなりコミット履歴が1つだけの状態になりました。
$ git log
ログを削除する事によって、履歴が(プロジェクトにとって)すっきりするほか、リポジトリサイズもいくらか縮小されます。
clone時点でかなりのリポジトリサイズを持っているようなオープンソースプロジェクトでは、du -sh .git
でサイズの確認を取りながら、その効果を計測して見るといいかもしれません。
注意
後々パッチがリリースされた時のために、
どの時点のコミットをcloneしてきたか、ハッシュを控えといたほうが良いと思います。
あと、オープンソースプロジェクトのログを軽視する旨で書いているわけではありませんので、その点はご了承を。