git gc
とgit repack -ad; git prune
の間に違いはありますか?
「はい」の場合は、git gc
(またはその逆)によって追加の手順は実行されますか?
宇宙の最適化や安全性に関してどちらの方が良いですか?`git gc`と` git repack -ad 'には違いがありますか? git prune`?
答えて
git gc
とgit repack -ad; git prune
の間に違いはありますか?
違いは、デフォルトではgit gc
は、どのようなハウスキーピング作業が必要であるかについて非常に慎重であるということです。たとえば、リポジトリ内の緩いオブジェクトの数が特定のしきい値(gc.auto
変数で設定可能)を超えていない限り、git repack
は実行されません。また、git gc
は、git repack
とgit prune
より多くのタスクを実行する予定です。
「はい」の場合は、
git gc
(またはその逆)によって実行される追加の手順はありますか?documentation、git gc
実行による
:
git-prune
git-reflog
git-repack
git-rerere
詳細スペック
pack-refs --all --prune
reflog expire --all
repack -d -l
prune --expire
worktree prune --expire
rerere gc
:ifically、
source code of
gc.c
(lines 338-343)1を見て、我々はそれが最も次のコマンドで
を呼び出すことがわかります
パック(lines 121-126)の数に応じて、それは代わりに(lines 203-212)-A
オプションでrepack
を実行することがあります。
* If there are too many loose objects, but not too many * packs, we run "repack -d -l". If there are too many packs, * we run "repack -A -d -l". Otherwise we tell the caller * there is no need. if (too_many_packs()) add_repack_all_option(); else if (!too_many_loose_objects()) return 0;
お知らせline 211-212 of the need_for_gc
function上のリポジトリに十分な緩いオブジェクトが存在しない場合に、 gc
はまったく実行されません。
この
はさらにdocumentationで明らかにされていますあまりにも多くの緩いオブジェクトまたはリポジトリにすぎ 多くのパックがある場合清掃が必要です。緩いオブジェクトの数が構成変数の値を超えると、 オブジェクトはすべて
git repack -d -l
を使用して1つのパックに結合されます。gc.auto
の値を0
に設定すると、 ルーズオブジェクトの自動パッキングが無効になります。パックの数が
gc.autoPackLimit
の値を超えると、(.keep
ファイルでマークされたものを除く) 既存のパックがgit repack
の-A
オプションを使用して、単一パックに統合されています。
ご覧のとおり、git gc
は、リポジトリの状態に基づいて正しいことを行うように努めています。
宇宙の最適化や安全性に関してどちらが良いですか?一般的に
それが良い形でリポジトリを維持するために必要な作業の最低額を行いますので、それは単にgit gc --auto
を実行する方が良いでしょう - 安全かつあまりにも多くのリソースを無駄にすることなく。
ただし、コンフィグレーション変数gc.auto
を0
に設定してこの動作を無効にしない限り、特定のコマンドに続いて自動的にガベージコレクションがトリガされる可能性があります。 documentationから
:
このオプションで--auto
、任意のハウスキーピングが必要かどうかをチェックし
git gc
。もしそうでなければ、それは何の仕事もせずに終了する。いくつかのgit コマンドは、 が多数の緩いオブジェクトを作成する操作を実行した後にgit gc --auto
を実行します。
したがって、ほとんどのリポジトリでは、明示的にgit gc
を実行する必要はありません。すでにそれはあなたの世話をしているためです。 2016年8月8日に行われa0a1831
をコミットするよう
1。
git help gc
は、オプションの構成変数gc.rerereresolvedが保たれているどのくらいの競合のマージのレコードを以前の解決を示しているいくつかのヒント...
が含まれています。
オプションの構成変数gc.rerereunresolvedは、解決されていない競合したマージのレコードが保持される期間を示します。
git repack -ad; git prune
の場合にのみ行われます。
- 1. git gc/git repack出力の "Total"行の数字は何を意味しますか?
- 2. 'git pull origin master'は 'git merge master'と違いがありますか?
- 3. `git merge origin master`と` git merge origin/master`の間に違いはありますか?
- 4. git pull、git fetchとgit rebaseの違いは何ですか?
- 5. git svnはgitサブツリーと互換性がありますか?
- 6. gitフィルタブランチとgitサブツリーの違いは?
- 7. 「git remote update」と「git fetch」と「git pull」の違いは何ですか?
- 8. Gerrit GCとGit GC - または両方ですか?
- 9. git push origin masterとgit pushの違い
- 10. git pullの違い。マスターとgitのマージマスター
- 11. git pullとgit request-pullの違い
- 12. git: 'send-email'はgitコマンドではありません。 「Gitの--help」
- 13. msys/gitとgit-for-windows/mingw-w64-x86_64-gitの違いは何ですか?
- 14. git fetch B + git merge Bとgit merge originの違いは何ですか?
- 15. Gitに "git pull --dry-run"オプションがありますか?
- 16. gitの枝刈りの違い
- 17. Git GCの後にGit Pushと書かれています。「すべて最新です」
- 18. git fetchとgit fetch originの違いは何ですか
- 19. "git add"と "git update-index"の違いは何ですか?
- 20. git pushとgit commitのタグの違いは何ですか
- 21. "git reset --hard"と "git checkout"の違いは何ですか?
- 22. "git reset"と "git rebase"の違いは何ですか?
- 23. git checkout commit-nameとgit checkout branchnameの違いは何ですか
- 24. "git whatchanged - filename"と "git rev-list-filename"の違いは何ですか?
- 25. Git/Git Extensionの "squash"と "fixup"の違いは何ですか?
- 26. gitとgitの違いは何ですか?
- 27. 'git format-patchと' git diff 'の違いは何ですか?
- 28. git commit -amとgit -mの違いは何ですか
- 29. git pushとgit pullの違いは何ですか?
- 30. エラー:「git: 'submodule'は、gitコマンドではありません。インテルエジソンとgit 2.0.1