什么是 Git 修剪?

我不小心删除了一些远程分支,但我真的不知道这样做的后果是什么(我在 Git Extended 中单击了“ Prune remote Branch”按钮,以为它会删除一个远程分支)。

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

119877 次浏览

这只是垃圾收集你的分支。

这意味着,如果一个对象(一个提交)无法在任何分支的祖先中到达,那么它将被移除到 git 数据库中,因此再也无法到达。

这只是清理了一点 Git 存储库,使其更轻松。

Git Extended 中的“剪枝远程分支”执行 git remote prune命令,该命令删除远程中不再存在分支的本地远程跟踪分支。

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

删除与 < name > 关联的陈旧引用。默认情况下,< name > 下陈旧的远程跟踪分支会被删除,但是根据全局配置和远程配置的不同,我们甚至可能会删除那些没有推送到那里的本地标记。等效于 git fetch --prune <name>,只是不会获取新的引用。

请参阅 去捡东西的修剪部分,了解它将根据不同的配置修剪哪些内容。

使用 --dry-run选项,报告将要修剪哪些分支,但不要实际修剪它们。

有可能是远程功能分支被删除后,我们合并到主人。我们可能已经删除了特性分支,作为一种清理的方式。但是,如果您将已删除的分支签出到本地系统,并将其设置为状态跟踪,git pull 将不会删除这些本地分支(因为它们已经与服务器断开连接)。为了清理这种本地孤儿分支,git prune命令将派上用场。

了解 李子是回购约束的是很重要的。不是每个人都知道可以将本地回购链接到多个远程。例如,当您使用一个开放源码项目并通过 fork 强制执行时,它就派上了用场。

所以,prune 命令需要一个回购名称。在大多数情况下,它是 git remote prune origin,但你可以叫你的回购任何东西,它不一定是 origin