当前位置: 首页 > 知识库问答 >
问题:

使用Git fetch或pull自动修剪

乜思淼
2023-03-14

如果有人因为工作结束而删除了一个远程分支,我不知道,我不会执行git finch--prune,最终我将推回已删除的分支。

有没有一个可行的解决方案可以迫使Git在获取/拉取时使用剪枝模式,而不必每次都指定它?

共有3个答案

毕浩渺
2023-03-14

如果你想在获取代码时总是修剪代码,我可以建议使用别名。

只需键入git config-e即可打开编辑器,更改特定项目的配置,并添加一个类似

[alias]
pfetch = fetch --prune   

当您使用git pfetch提取时,修剪将自动完成。

越朗
2023-03-14

要始终——在所有git存储库中为git fetchgit pull修剪

git config --global fetch.prune true

上面的命令在全局Git配置(通常是~/. gitconfig)中附加以下行。使用git config-e--global查看全局配置。

[fetch]
    prune = true

总是--prune,但是来自一个存储库:

git config remote.origin.prune true
                 #^^^^^^
                 #replace with your repo name

上面的这个命令在本地Git配置(通常是.Git/config)中添加下面的最后一行。使用git config-e查看本地配置。

[remote "origin"]
    url = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    fetch = +refs/heads/*:refs/remotes/origin/*
    prune = true

您还可以在第二个命令中使用--global,也可以在第一个命令中使用--local

如果您使用的是git gui,您可能还对以下方面感兴趣:

git config --global gui.pruneDuringFetch true

这就附加了:

[gui]
    pruneDuringFetch = true

来自git help config的相应文档:

对于写入选项:写入全局~/. gitconfig文件而不是存储库. git/config,如果该文件存在而~/. gitconfig文件不存在,则写入$XDG_CONFIG_HOME/git/config文件。

对于写入选项:写入存储库. git/config文件。这是默认行为。

  如果为true,fetch将自动运行,就像命令行上给出了--prune选项一样。另请参见remote。

  如果git gui在执行获取时应该修剪远程跟踪分支,则为“true”。默认值为“false”。

  当设置为true时,默认情况下,从该远程设备获取还将删除远程设备上不再存在的任何远程跟踪引用(就像命令行上给出了--prune选项一样)。覆盖fetch。删除设置(如果有)。

狄宜然
2023-03-14

自git 1.8.5(2013年第4季度)以来:

git-fetch”(因此“git-pull”也学会了检查“fetch.prune”和“remote.*.prune”配置变量,并表现得好像给出了“--prune”命令行选项。

这意味着,如果您将remote.origin.prune设置为true:

git config remote.origin.prune true

任何git-fetchgit-pull都将自动删除。

注意:Git 2.12(Q1 2017)将修复与此配置相关的错误,这将使git远程重命名行为不端。

在提交737c5a9中查看更多信息:

如果没有“git fetch--prune”,另一方已经删除的分支的远程跟踪分支将永远保留
有些人希望总是运行“git fetch--prune”。

若要容纳希望始终删除或从特定远程设备获取数据的用户,请添加两个新配置变量“fetch.prune”和“remote”。

  • "fetch.prune"允许为所有读取操作启用剪枝。
  • "远程。

后者将自然覆盖前者,命令行中的-[no-]prune选项将覆盖配置的默认值。

由于--prune是一个潜在的破坏性操作(Git还没有为删除的引用保留重写),我们不想在未经用户同意的情况下进行修剪,因此默认情况下此配置不会打开。

 类似资料:
  • 在 pull requests 使用“Work In Progress”标记 您可以通过在一个进行中的 pull request 的标题上添加前缀 WIP: 或者 [WIP](此处大小写敏感)来防止它被意外合并,具体的前缀设置可以在配置文件 app.ini 中找到: [repository.pull-request] WORK_IN_PROGRESS_PREFIXES=WIP:,[WIP] 列表

  • 当然,有关标准的事物是如此之多。有时每个应用程序的配置格式都略有不同, 书写正则表达式来解析和修改所有这些配置文件是一项很烦人的工作。 幸好 Augeas 在这方面可以帮助我们。Augeas 是一个旨在简化使用不同配置文件格式工作的工具, 它将不同格式的配置文件统一呈现为一个简单的包含所有配置项的树状结构。 Puppet 的 Augeas 支持允许你创建 augeas 资源,它可以智能地自动地为所

  • 问题内容: 我们有一个使用HP Quality Center的项目,我们面临的常见问题之一是人们没有更新有关缺陷的评论。 因此,我在考虑是否可以提出一个小的脚本或工具,以用于定期引发提醒并迫使用户更新评论。 我遇到了开放测试体系结构API,想知道是否有可以看到的相同的好Python或Java示例。 谢谢哈里 问题答案: 我不确定Java是否有好的示例,因为OTA不能直接被Java消耗,它需要Jav

  • 我不知道像这样的s特性的确切名称是什么,但我将只是描述它。 我使用的是android studio,我从一个不同的项目中添加了一些java类。现在它说

  • Typescript在这行抱怨道: 我得到这个错误: 因为postId被接收为<code>req.params。postId</code>它是string类型,所以我将其转换为mongoose objectId,但仍然有相同的错误: pull() 在猫鼬数组中工作。这行代码是我在javacsript中实现的。我正在将我的项目转换为打字稿。这是用户模型的用户界面和架构。 这里发布架构和界面

  • 我是git的新用户,正在使用JGit与远程git存储库进行交互。在JGit中,我最初使用<code>CloneCommand</code>来克隆回购,并且它没有问题。但是,当我尝试使用<code>PullCommand 这是我使用的代码: 这不会为我已使用命令行推送到远程存储库的新文件更新本地存储库。但是,如果我删除本地存储库并再次克隆,则会反映所有更改。 请让我知道在JGit中使用的正确方法是什