当我执行git fetch origin
并且origin有一个已删除的分支时,它似乎不会在我的存储库中更新它。 当我做git branch -r
它仍然显示origin/DELETED_BRANCH
。
我怎样才能解决这个问题?
#1楼
来自http://www.gitguys.com/topics/adding-and-removing-remote-branches/
有人从远程存储库中删除分支后,当用户执行git pull或git fetch时,git不会自动删除本地存储库分支。 但是,如果用户希望从远程存储库中删除的本地存储库中删除所有跟踪分支,则可以键入:
git远程修剪原产地
注意, git fetch -p
的-p param实际上意味着“修剪”。
无论您选择哪种方式,都将从本地存储库中删除不存在的远程分支。
#2楼
这对我有用。
git remote update --prune
#3楼
您需要执行以下操作
git fetch -p
以便同步您的分支列表。 git手册说
-p
, ---prune
获取后,删除远程不再存在的任何远程跟踪引用。 如果仅由于默认标记自动跟踪或由于--tags
选项而提取标记,则不对其进行修剪。 但是,如果由于显式refspec(在命令行或远程配置中,例如,如果使用--mirror
选项克隆远程)而--mirror
,则它们也会受到修剪。
我个人喜欢使用git fetch origin -p --progress
因为它显示了进度指示器。
#4楼
关于git fetch -p
,它的行为在Git 1.9中有所改变,只有Git 2.9.x / 2.10反映了这一点。
见Jeff King( peff
)的 提交9e70233 (2016年6月13日) 。
(由Junio C gitster
合并- gitster
-在提交1c22105 ,2016年7月6日)
fetch
: 在获取之前修剪发生的文档这在10a6cc8中被改变了(
fetch --prune
:在获取之前运行修剪,2014-01-02),但似乎没有人在讨论中意识到我们明确地宣传了“之后”。
所以文档现在说明:
在获取之前 ,删除远程不再存在的任何远程跟踪引用
那是因为:
当我们从之前的fetch中有一个名为“
frotz/nitfol
”的远程跟踪分支,并且上游现在有一个名为“frotz
”的分支时,fetch将无法使用“git fetch --prune
”删除“frotz/nitfol
git fetch --prune
”从上游。 git会通知用户使用“git remote prune
”来解决问题。通过在提取操作之前移动修剪操作来更改“
fetch --prune
”的工作方式。 这样,它不会警告用户冲突,而是自动修复它。
#5楼
您需要执行以下操作
git fetch -p
这将更新远程分支的本地数据库。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3164266