有没有办法让git忽略整个分支?

时间:2016-08-07 19:52:24

标签: git

这可能违背了git的设计理念,但是:

在我的组织中,我不断地拆除数千个开发者分支,例如, <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:marginTop="?attr/actionBarSize" <!-- here is marginTop --> tools:context="com.example.leonel.picollo.MainFragment"> </RelativeLayout>

我宁愿使用git,默认情况下,不要拉下这些分支。然后,如果事实证明我确实需要在特定的分支中进行协作,我会明确地将其删除。

这可能吗? (我的研究很少表明没有)

由于

2 个答案:

答案 0 :(得分:3)

git-pull使用git-fetch

请参阅https://git-scm.com/docs/git-fetch了解其文档,尤其是“配置远程跟踪分支”部分(下面逐字附上)。

考虑到这一点,你只能将模式列入白名单,而不是排除某些模式。你可以做的是:

  • 手动列出要从中提取的分支而不是通配符
  • 让每个人都为所有分支使用前缀,以便您可以区分Dev/*Foo/*

git fetch允许您配置远程。&lt; repository&gt; .fetch配置变量。

通常这样的变量可能如下所示:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*

此配置以两种方式使用:

运行git fetch而不指定在命令行上获取哪些分支和/或标记,例如git fetch origin或git fetch,remote。&lt; repository&gt; .fetch values用作refspecs-它们指定要获取的ref引用以及要更新的本地引用。上面的示例将获取原点中存在的所有分支(即,与值的左侧匹配的任何ref,refs / heads / )并更新refs / remotes / origin中的相应远程跟踪分支/ 层次结构。

答案 1 :(得分:3)

您始终可以简单地获取您正在处理的当前分支,并且只获取此分支。

  

我宁愿使用git,默认情况下,不要拉下这些分支

# pull only the current branch you are working on
# git pull = git fetch && git merge
git pull origin <branch name>

现在,当您需要合并分支时,您始终可以使用此语法来拉/合并它:

# grab the remote branch
git pull origin Dev/<branch name>

另一种方法是与你的refspec“玩”但我不建议这样做,即使它非常简单。

以下是文档的示例:

  

...但是,您可以使用命名空间(或目录)来完成类似的操作。

     

如果你有一个推动一系列分支的QA团队,   你希望获得主分支和任何QA团队的分支,但没有别的,你可以使用这样的配置部分:

[remote "origin"]
    url = https://github.com/schacon/simplegit-progit
    fetch = +refs/heads/master:refs/remotes/origin/master
    fetch = +refs/heads/qa/*:refs/remotes/origin/qa/*