如何让Git警告我可能已删除的远程分支
想象一下,我有一个从某个来源克隆的本地存储库。在我最初克隆时,起源有四个分支:featureurea、featureB、featureC和master。如果我将更改推送到删除分支的原点,我希望在下一次发布时看到它被删除: $git拉原点 然而,当我试着用鼠标向下拉那个特定的分支时,我什么也看不到 $git拉起点 我得到以下错误: 致命:找不到远程引用如何让Git警告我可能已删除的远程分支,git,Git,想象一下,我有一个从某个来源克隆的本地存储库。在我最初克隆时,起源有四个分支:featureurea、featureB、featureC和master。如果我将更改推送到删除分支的原点,我希望在下一次发布时看到它被删除: $git拉原点 然而,当我试着用鼠标向下拉那个特定的分支时,我什么也看不到 $git拉起点 我得到以下错误: 致命:找不到远程引用 致命:远端挂断 不料 这完全有道理,因为分支实际上是从远程删除的,所以是的,ref不再存在了,但是我想知道为什么我没有得到关于这个事实的通知。遥控
致命:远端挂断 不料 这完全有道理,因为分支实际上是从远程删除的,所以是的,ref不再存在了,但是我想知道为什么我没有得到关于这个事实的通知。遥控器的My.git/config如下所示: [远程“源站”]
fetch=+refs/heads/:refs/remotes/origin/
url=cjames@svn.perecep.com:/data/git/perecep.git
我已经编写了一个小的shell脚本,它使用git ls remote以及git branch-r的输出来检测远程引用,这些引用的分支在服务器上已不存在,并提示我是否要删除它们,但我想知道我是否只是在这里做了一些固有的错误?我不认为您是这样做的做错事。您的本地分支不依赖于远程分支的存在,当您的本地分支(名称相同,表面上历史相同)继续存在时,删除远程分支是一种完全有效的状态。这是您描述的“集中式”方法,如果有的话,在Git中会被认为是非正统的
编辑:切题来说,您可能对git branch的
--track
和--no track
选项以及branch.autosetupmerge
配置变量感兴趣。好的,不需要特殊脚本。我想我忽略了这个命令
$git远程修剪源
从手册页:
prune
Deletes all stale tracking branches under . These stale branches
have already been removed from the remote repository referenced by
, but are still locally available in "remotes/".
With --dry-run option, report what branches will be pruned, but do
no(sic) actually prune them.
修剪
删除下所有过时的跟踪分支。这些枯枝
已从引用的远程存储库中删除
,但仍在“remotes/”中本地可用。
使用--dry run选项,报告将要修剪的分支,但不执行
没有(原文如此)实际修剪它们。
我在Git b/c中遵循一个更为“中心服务器”的工作流程我在一个公司环境中,这就是笔记本电脑的开发人员现在更愿意共享代码的方式(通过在中心服务器上创建公共主题分支,将其更改推送到以供协作)。因为我们刚从SVN过渡过来,所以他们对这一点比较满意。我想我担心的是,在创建了几个这种性质的临时分支并在功能/主题集成后被删除之后,所有开发人员现在在其本地repo中都有大量陈旧的远程分支引用。是否有任何设置可以在更新远程分支时自动执行此操作?