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