什么是Git修剪?


86

我不小心修剪了一些远程分支,但我真的不知道其结果是什么(我单击了Git Extensions中的“修剪远程分支”按钮,以为它将删除远程分支)。

官方文档说“ git-prune-修剪对象数据库中所有无法访问的对象”。我真的不明白这是什么意思。我猜这可能已经删除了合并的分支,但我不确定。



1
也许值得一看git gcgit-scm.com/docs/git-prune
科瓦奇

Answers:


91

Git Extensions中的“修剪远程分支”执行git remote prune命令,该命令将删除您的本地远程跟踪分支,其中分支不再存在于远程。

看到这里:https : //git-scm.com/docs/git-remote#git-remote-empruneem


所以它基本上优先于您的远程服务器并调整您的本地服务器以匹配您的远程分支机构?
蜂蜜

3
@Honey不,它只是删除本地远程跟踪分支,普通分支不会被触及。
1715903年

32

这只是垃圾收集您的分支机构。

那意味着,如果在分支的任何祖先中都无法访问对象(提交),则它将被git数据库删除,因此无法再访问。

这只是清理了一点git仓库,使其更轻便。


4
根据文档,对于诸如此类的家政任务,最好执行agit gc而不是git prune实质上将执行git prune的a。
科瓦奇

1
Downvote:此答案(以及与此相关的问题)使git prune和混淆git remote prune。它们并不相同,后者实际上清除了远程上不再存在的分支,同时保持了本地分支不变。
JBert

12

重要的是要知道修剪是回购绑定的。并非所有人都知道您可以将本地存储库链接到多个远程服务器。例如,当您使用开放源代码项目并被强制通过fork进行工作时,它会派上用场。

因此,prune命令需要一个仓库名称。在大多数情况下,它是git remote prune origin,但是您可以将您的仓库称为任何东西,而不必如此origin


2

合并我们的母版之后,可能会删除一些远程功能分支。我们可能已删除功能分支作为清理方式。但是,如果您已签出到本地系统的已删除分支并设置为跟踪状态,则git pull不会删除那些本地分支(因为那些已经与服务器断开连接)。要清理此类本地孤儿分支,git prune命令将非常有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.