Answers:
“
git fetch(因此git pull也是如此)学会了检查“fetch.prune”和“remote.*.prune”配置变量,并像--prune给出命令行选项一样工作。
这意味着,如果将remote.origin.prune设置为true:
git config remote.origin.prune true
任何git fetch或git pull将自动修剪。
注意:Git 2.12(Q1 2017)将修复与此配置相关的错误,这可能会导致git remote rename行为不端。
请参阅“ 如何重命名git遥控器? ”。
在commit 737c5a9上查看更多信息:
如果没有“
git fetch --prune”,则另一端已删除的分支的远程跟踪分支将永远保留。
有些人希望始终运行“git fetch --prune”。为了适应那些希望一直修剪或从特定远程获取信息的用户,请添加两个新的配置变量“
fetch.prune”和“remote.<name>.prune”:
- “
fetch.prune”允许为所有提取操作启用修剪。- “
remote.<name>.prune”允许更改每个遥控器的行为。后者自然会覆盖前者,并且
--[no-]prune命令行中的选项将覆盖配置的默认值。由于这
--prune是一种潜在的破坏性操作(Git尚未为已删除的引用保留引用日志),所以我们不想在未经用户同意的情况下进行修剪,因此默认情况下不会启用此配置。
git config --global fetch.prune true
git config --global fetch.prune true要始终--prune对git fetch和git pull所有Git仓库的位置:
git config --global fetch.prune true
上面的命令在您的全局Git配置中(通常是~/.gitconfig)添加了以下几行。使用git config -e --global查看您的全局配置。
[fetch]
prune = true
git config remote.origin.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 config --global gui.pruneDuringFetch true如果您使用,git gui您可能还会对以下内容感兴趣:
git config --global gui.pruneDuringFetch true
追加:
[gui]
pruneDuringFetch = true
来自的相应文档git help config:
--global对于写选项:写到全局
~/.gitconfig文件而不是存储库.git/config,写到$XDG_CONFIG_HOME/git/config文件(如果此文件存在而~/.gitconfig文件不存在)。
--local对于写选项:写到存储库
.git/config文件。这是默认行为。
fetch.prune如果为true,则提取将自动执行,就像
--prune在命令行中给出了该选项一样。另请参阅remote.<name>.prune。
gui.pruneDuringFetch如果git-gui在执行提取操作时应修剪远程跟踪分支,则为“ true” 。默认值为“ false”。
remote.<name>.prune设置为true时,默认情况下从此远程获取还将删除远程上不再存在的所有远程跟踪引用(就像
--prune在命令行中提供了该选项一样)。覆盖fetch.prune设置(如果有)。
git config -e和git config -e --global这个职位。不再需要键入vim命令来指向git配置文件的特定路径,而不必考虑该特定路径是什么。
git config --global fetch.prune true”一样好(带有指向相关文档的链接)。
如果您想一直prune使用fetch,我建议您使用别名。
只需键入git config -e以打开编辑器并更改特定项目的配置,然后添加一个部分,例如
[alias]
pfetch = fetch --prune
当您使用git pfetch修剪工具时,将自动完成。
pull和fetch他们修剪的版本。实际上,我认为(但我没有尝试过)您可以fetch = fetch --prune直接在别名部分中编写,因此pull将自动使用修剪后的提取
fetch = fetch --prune不起作用,用别名覆盖命令对我来说不起作用。这可能是因为我使用的是旧版本(1.7.2.5)
git fetch!请参阅下面的答案