2010-01-20 79 views
7

所以,想象一下,我有,我已经从一些克隆起源的本地存储库。在我INTIAL克隆的时间,产地有四个分支:featureA,featureB,featureC。如果我推更改产地证明删除featureA分支我希望看到一些关于它的下一次被删除我发出:我如何让让Git来警告我可能删除远程分支机构

$ git pull origin

但是,什么情况是,我没有看到任何东西当我试图去拉那个特定分支下来

$ git pull origin featureA

我得到以下错误:

fatal: Couldn't find remote ref featureA
fatal: The remote end hung up unexpectedly

这完全是有道理的,因为日Ë分公司其实从远程删除这样啊,裁判是不存在了,但是我不知道为什么我没有收到通知这一事实。远程我的.git/config中看起来是这样的:

[remote "origin"]
fetch = +refs/heads/:refs/remotes/origin/
url = [email protected]:/data/git/perecep.git

我已经写了使用git的LS-远程与输出沿混帐分支-r一个小的shell脚本检测遥控裁判,其分支机构不再存在于服务器上,并提示我,如果我想删除他们,但我想知道如果我只是在做一些固有的错在这里?

回答

2

我不认为你做错了什么。当地分行不赖以生存的远程分支,它是事务的一个远程分支完全有效的状态将被删除,而你的本地(同一个名字的,表面上相同的历史)的分支去现有的。这是你所描述的“集中式”方法,如果有的话,这在Git中会被认为是非正统的。

编辑:切线方向,您可能对git-branch的--track--no-track选项以及branch.autosetupmerge配置变量感兴趣。

+0

我下面使用Git更“中央服务器”的工作流程B/C我是在企业环境中,这是开发人员如何而现在笔记本电脑更倾向于共享代码(通过在中央服务器上创建公共主题分支来推动其变更以进行协作)。由于我们刚刚从SVN过渡,这是他们更加适应的东西。 我想我担心的是,在创建了几个这种性质的短暂分支,在特征/主题集成之后被删除之后,所有开发人员现在都会在其本地回购库中拥有大量过时的远程分支引用。 – NewGitUser 2010-01-20 00:56:02

3

好了,不需要特殊的脚本。我想我忽略了这个命令

$ git remote prune origin

从手册页:

 
    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. 
+0

是否有任何设置可以在更新遥控器时自动实现这一功能? – xenoterracide 2010-08-21 03:36:56