web-dev-qa-db-ja.com

Gitプルーニングとは何ですか?

誤っていくつかのリモートブランチをプルーニングしましたが、その結果が本当にわかりません(Git Extensionsの[リモートブランチのプルーニング]ボタンをクリックして、リモートブランチが削除されると考えました)。

公式ドキュメントには、「git-Prune-オブジェクトデータベースから到達不能なオブジェクトをすべて削除する」と書かれています。私はこれが何を意味するのか本当に理解していません。私はこれがマージされたブランチを削除したかもしれないと推測していますが、私は本当に確信がありません。

65
Daniel Ball

Git Extensionsの「リモートブランチのプルーニング」はgit remote Pruneコマンドを実行し、リモートにブランチが存在しないローカルリモートトラッキングブランチを削除します。

こちらをご覧ください: https://git-scm.com/docs/git-remote#git-remote-empruneem

68
1615903

これは、ブランチをガベージコレクションするだけです。

つまり、ブランチの祖先のいずれかでオブジェクト(コミット)に到達できない場合、そのデータベースはgitデータベースから削除されるため、それ以上到達できません。

これにより、Gitリポジトリが少しクリーンアップされ、軽量化されます。

26
blue112

プルーンはレポバインドされているであることを知っておくことが重要です。ローカルリポジトリを複数のリモートにリンクできることを誰もが知っているわけではありません。たとえば、オープンソースプロジェクトで作業し、フォーク経由で作業するように強制されている場合に便利です。

そのため、Pruneコマンドにはリポジトリ名が必要です。ほとんどの場合、git remote Prune Originですが、リポジトリを呼び出すことができます。Originである必要はありません。

3
yuranos87

マスターにマージした後に削除されるリモート機能ブランチが存在する場合があります。クリーンアップの方法として機能ブランチを削除した可能性があります。ただし、削除されたブランチをローカルシステムにチェックアウトし、ステータスをトラッキングとして設定した場合、git pullはそれらのローカルブランチを削除しません(これらは既にサーバーから切断されているため)。そのようなローカルの孤立ブランチをクリーンアップするには、git Pruneコマンドが役立ちます。

1
Santhosh J