Gitの剪定とは何ですか?


88

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

公式ドキュメントには、「git-prune-オブジェクトデータベースから到達不能なすべてのオブジェクトを削除する」と記載されています。これが何を意味するのかよくわかりません。これでマージされたブランチが削除されたのではないかと思いますが、よくわかりません。



1
一見の価値があるかもしれませんgit gcgit-scm.com/docs/git-pruneも。
Kovacの

回答:


93

Git Extensionsの「リモートブランチのプルーニング」はgit remote pruneコマンドを実行します。これにより、ブランチがリモートに存在しなくなったローカルリモートトラッキングブランチが削除されます。

ここを参照してください:https//git-scm.com/docs/git-remote#git-remote-empruneem


つまり、基本的にリモートを優先し、リモートブランチに一致するようにローカルを調整しますか?
ハニー

3
@Honeyいいえ、ローカルのリモート追跡ブランチを削除するだけです。通常のブランチには影響しません。
1615903 2017年

32

これはただゴミがあなたの枝を集めるだけです。

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

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


4
ドキュメントによると、このようなハウスキーピングタスクのgit gc場合、git prune基本的にgitpruneも実行するよりも実行する方がよい場合があります。
Kovacの

1
反対票:この回答(およびその問題に関する質問)は混乱しgit prunegit remote prune。それらは同じではありません。後者は、ローカルブランチをそのままにして、リモートに存在しなくなったブランチを実際にクリアします。
JBert

12

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

したがって、pruneコマンドにはリポジトリ名が必要です。ほとんどの場合はgit remote prune originですが、レポは何でも呼び出すことができます。である必要はありませんorigin


2

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.