如果有人删除了一个远程分支,因为工作结束了,我不知道,我不会做git fetch --prune,最终我会推回已删除的分支.
是否有可行的解决方案强制git在获取/拉取时使用剪枝模式而不必每次都指定它?
Von*_*onC 356
"
git fetch"(因此"git pull"也学会了检查"fetch.prune"和"remote.*.prune"配置变量,并表现得好像给出了"--prune"命令行选项.
这意味着,如果将remote.origin.prune设置为true:
git config remote.origin.prune true
Run Code Online (Sandbox Code Playgroud)
任何git fetch或git pull将自动修剪.
注意:Git 2.12(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不保留已删除引用的reflog),我们不希望在没有用户同意的情况下进行修剪,因此默认情况下不会启用此配置.
oli*_*bre 123
git config --global fetch.prune true要始终--prune为git fetch和git pull你所有的Git仓库:
git config --global fetch.prune true
Run Code Online (Sandbox Code Playgroud)
上面的命令会在您的全局Git配置中附加(通常~/.gitconfig)以下行.使用git config -e --global查看您的全局配置.
[fetch]
prune = true
Run Code Online (Sandbox Code Playgroud)
git config remote.origin.prune true总是--prune来自一个单一的存储库:
git config remote.origin.prune true
#^^^^^^
#replace with your repo name
Run Code Online (Sandbox Code Playgroud)
以上命令在您的本地Git配置中添加(通常.git/config)下面的最后一行.使用git config -e查看您的本地配置.
[remote "origin"]
url = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
fetch = +refs/heads/*:refs/remotes/origin/*
prune = true
Run Code Online (Sandbox Code Playgroud)
您也可以--global在第二个命令中使用或--local在第一个命令中使用.
git config --global gui.pruneDuringFetch true如果您使用,git gui您可能也会对以下内容感兴趣:
git config --global gui.pruneDuringFetch true
Run Code Online (Sandbox Code Playgroud)
附加:
[gui]
pruneDuringFetch = true
Run Code Online (Sandbox Code Playgroud)
相应的文件来自git help config:
--global对于写入选项:写入全局
~/.gitconfig文件而不是存储库.git/config,$XDG_CONFIG_HOME/git/config如果此文件存在且~/.gitconfig文件不存在,则写入文件.
--local对于写入选项:写入存储库
.git/config文件.这是默认行为.
fetch.prune如果为true,则fetch将自动表现为
--prune在命令行上给出选项.另见remote.<name>.prune.
gui.pruneDuringFetch如果git-gui在执行提取时应修剪远程跟踪分支,则为"true" .默认值为"false".
remote.<name>.prune设置为true时,默认情况下从此远程获取也将删除远程不再存在的任何远程跟踪引用(就像
--prune在命令行上给出了该选项一样).覆盖fetch.prune设置(如果有).
Tha*_*ish 19
如果你想永远prune在你身边fetch,我建议你使用别名.
只需键入git config -e即可打开编辑器并更改特定项目的配置,并添加类似的部分
[alias]
pfetch = fetch --prune
Run Code Online (Sandbox Code Playgroud)
当您使用git pfetch修剪获取时将自动完成.
| 归档时间: |
|
| 查看次数: |
90691 次 |
| 最近记录: |