使用git获取或拉取自动修剪
如果有人删除了一个远程分支,因为工作结束,我不知道,我不会做一个git fetch --prune
,最后我会推回删除的分支。
有没有一个可行的解决scheme,强制git使用prune模式时提取/拉,而不必每次指定它?
git 1.8.5(2013年第四季度)将build议 :
“
git fetch
”(因此也称为“git pull
”)学会检查“fetch.prune
”和“remote.*.prune
”configurationvariables,并像“--prune
”命令行选项那样工作。
这意味着,如果你设置remote.origin.prune为true:
git config remote.origin.prune true
任何git fetch
或git pull
都会自动修剪。
注:Git 2.12(2017年第1季度)将修复与此configuration有关的错误,这将使git remote rename
行为不当。
请参阅“ 如何重命名git remote? ”。
请参阅commit 737c5a9 :
如果没有“
git fetch --prune
”,远程追踪分支的另一端已经移除的分支将永远保留。
有些人总是想运行“git fetch --prune
”。为了适应希望总是修剪或从特定远程访问的用户,添加两个新的configurationvariables“
fetch.prune
”和“remote.<name>.prune
”:
- “
fetch.prune
”允许为所有提取操作启用修剪。- “
remote.<name>.prune
”允许更改每个远程的行为。后者自然会覆盖前者,而命令行中的
--[no-]prune
选项将覆盖已configuration的默认值。由于
--prune
是一个潜在的破坏性操作(Git不保留已删除引用的reflog),所以我们不想在没有用户同意的情况下修剪,所以默认情况下这个configuration不会被启用。
git config --global fetch.prune true
总是--prune
的git fetch
和git pull
你所有的Git仓库:
git config --global fetch.prune true
上面这个命令附加在你的全局Gitconfiguration(通常是~/.gitconfig
)中。 使用git config -e --global
查看您的全局configuration。
[fetch] prune = true
git config remote.origin.prune true
要永远--prune
但从一个单一的存储库:
git config remote.origin.prune true #^^^^^^ #replace with your repo name
这个上面的命令添加了你的本地Gitconfiguration(通常是.git/config
)下面的最后一行。 使用git config -e
来查看你的本地configuration。
[remote "origin"] url = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx fetch = +refs/heads/*:refs/remotes/origin/* prune = true
您也可以在第二个命令中使用--local
,或者在第一个命令中使用--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
,如果这个文件存在并且~/.gitconfig
文件不存在,则写入$XDG_CONFIG_HOME/git/config
文件。
--local
写入选项:写入存储库
.git/config
文件。 这是默认行为。
fetch.prune
如果为true,则fetch将自动执行,就像在命令行上给出
--prune
选项一样。 另请参阅remote.<name>.prune
。
gui.pruneDuringFetch
如果git-gui在执行提取时修剪远程跟踪分支,则为“true”。 默认值是“false”。
remote.<name>.prune
设置为true时,默认从此远程
--prune
存将删除远程不再存在的任何远程跟踪引用(就像在命令行上给出--prune
选项一样)。 覆盖fetch.prune
设置(如果有的话)。
如果你总是在prune
时prune
,我可以build议使用别名 。
只要inputgit config -e
来打开你的编辑器,并改变一个特定项目的configuration,并添加一个类似的部分
[alias] pfetch = fetch --prune
当你用git pfetch
读取剪枝将自动完成。