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
!请参阅下面的答案