私の最初のコミットは、間違いなくそれの中にかなりのメディアファイルで作られているので、スペースの90%を食べているようです。ローカルとリモートのリポジトリから最初のコミットだけを削除する方法はありますか?それともこのままにしておきますか?Gitリポジトリから最初のコミットを削除できますか?
答えて
既に他の多くのユーザーとリポジトリを共有しているようです。これが当てはまる場合は、おそらくそれだけで生活するべきです。
すべてのクローンを管理している場合は、意図しないファイルを削除して、変更されたルートコミットの上に履歴を書き直すことができます。他の開発者がすでにこのブランチから作業している場合は、これを行うべきではないことに注意してください。
履歴を書き換えている場合は、次の方法を試すことができます。 gitはHEADコミットが最近行われたログ(reflogs)のログを保持しているので、git gc
またはgit gc --prune
にしようとしても、大きなオブジェクトはリポジトリや他のリポジトリからすぐに消えません。ただし、新しいクローンがマスターブランチの履歴の一部として大きなオブジェクトをフェッチすることはありません。
作業ディレクトリは、「クリーン」であると仮定すると:(例節を参照してください)別の方法としては、問題のあるファイルを削除するgit filter-branchを使用することができます
# Go back the initial commit
git checkout <SHA1_of_old_root>
# Clean up the index to remove unwanted files, e.g. using git rm <files>
# ...
# Amend the initial commit with the new tree. Note the sha1 of the new commit
git commit --amend
# Go back to the master branch
git checkout master
# Re-apply all the commits onto the new root
git rebase --onto <SHA1_of_new_root> <SHA1_of_old_root>
、それはまた、歴史を書き換えています。だから、あなたの古い歴史の上に自分のコードを置いた人は、悪い驚きを得るでしょう...
filter-branchもより良い対処をします(または少なくとも対話を少なくする必要があります)if不要なファイルに対する変更は、ルートコミット以降に追跡されています。 –
'git rebase --root'もあります。詳細については、以下のSO答えを参照してください。http://stackoverflow.com/questions/2246208/change-first-commit-of-project-with-git – MKroehnert