大きなバイナリファイルがたくさんあるリポジトリが1つあります。コミットの最後のn個だけを保持するようにgitを設定することは可能でしょうか?私はこのリポジトリの履歴にファイルの最後の5つのコピーを保持したいだけですか?しかし、私は5つのコミットごとにこれを手動で実行したくないのですか?gitを使ってヒストリに特定のコミット数を維持する
答えて
"git rebase --interactive"を使用してください。最初の5つのコミットを「選択」とし、残りを「スカッシュ」とマークします。
他のreposから引き出されたときにも同期するでしょうか? –
複製されたディレクトリは、履歴を変更するたびに完全な変更履歴を取得する必要があります。そのため、複製されたリポジトリからの 'git fetch'には時間がかかることがあります。 – Bombe
Kindasorta。 git clone --depth N
はリポジトリの「浅いクローン」を実行させます。しかし、これをプッシュ/クローン/フェッチすることはできませんので、開発者としてはあまり役に立ちません。
私はそれについて知っていますが、私はまた、クローンだけでなくレポの5つ以上のコピーを保持したくありません。 –
これは不可能です。@ダスティンが示唆しているように、リポジトリを書き直す必要があります。これらの巨大なファイルをどのように保存するか再評価することをお勧めします。たぶんGitは最善の解決策ではありません。 –
唯一の方法は、リポジトリを定期的に書き換えることです。
コミットには、コミットメタデータのハッシュ、コミット情報、コミットの親とコミットしているツリーが含まれています。現在に影響を与えることなく過去に何かを変更することはできません。
Dustinが述べたように、それを行う唯一の方法は、定期的にリポジトリを書き換えることです。 Gitは間違いなくこのための "組み込み"のサポートを持っていないし、すぐに(この機能を排除するもののようなものの基本的な設計)そのようなサポートを持つ可能性が高いです。つまり、それをやりたいのであれば、手動で行う必要があります。
this questionの回答は、git filter-branch
を使用してこれを実行する方法の例を示しています。
- 1. gitコミットのコンピュータを特定する
- 2. git workflow:機能コミットの履歴を維持する
- 3. gitブランチをunmergeし、post-mergeコミットを維持する
- 4. Git - 複数のバージョンを維持する
- 5. git - マージするときに特定のコミットをスキップする
- 6. Gitコミットする前に特定のファイルを隠す
- 7. Git:特定のコミットを別のブランチに移動する。
- 8. gitを見るとグラフィックスを使ってローカルにコミットする
- 9. ローカルgitリポジトリで特定のコミットを削除するには?
- 10. Gitが特定のコミット(タグ)までプル
- 11. 私のリモートgitリポジトリを特定のコミットに戻すには?
- 12. JGitを使ってファイルを特定のコミットにリセットするには?
- 13. Gitを使って変更をコミットしてプッシュする方法
- 14. gitを検索するRegexを使ってコミットする
- 15. バックアップファイルの設定数を維持する
- 16. Gitを使って特定のパスパーミッションを設定する方法は?
- 17. Flash AS3:マウスを特定の境界内に維持する
- 18. 特定の親を持つすべてのコミットを見つけるには?
- 19. GITの異なるコミットの特定のファイルを比較するには?
- 20. Railsを使ってGitリポジトリをコミットしてプッシュ
- 21. Gitコミットに関連する問題 - コミットは現在同様の特典を持っている別のユーザのログイン資格を取ります
- 22. GITを使ってコミットするときに私のコマンドラインがロックアップする
- 23. pre-commitフックを使用して特定の作者によるgitコミットを停止する
- 24. gitを使って特定のバージョンのLinuxソースコードに切り替えるには?
- 25. 作者:特定のコミットを持つプロジェクトを作成する
- 26. proguard使用時に特定のパッケージパスを維持/除外する方法は?
- 27. `git show`を使用して複数のコミットにまたがってパッチを作成して適用する
- 28. コミット後にgitフックを使用する
- 29. 特定の作者によるコミットを入手する(複数)
- 30. コミットする前にGITハッシュを知っていますか?
私はそれを疑うが、私はその考えが好きだ。 –