29

我正在使用 GitHub 的页面功能。这通过将发布的 HTML 放在一个名为gh-pages. 我有两个独立的工作目录,一个用于项目本身,一个用于 HTML 文档。

在前者中,我想完全忽略gh-pages分支,因为它是一项不相关的工作,我不希望它弄乱我的各种提交可视化。

也就是说,我所拥有的是:

$ git remote show origin
* remote origin
  Fetch URL: git@github.com:reidpr/quac.git
  Push  URL: git@github.com:reidpr/quac.git
  HEAD branch: master
  Remote branches:
    bar              tracked
    foo              tracked
    gh-pages         tracked
    master           tracked
  Local branches configured for 'git pull':
    master    merges with remote master
  Local refs configured for 'git push':
    master    pushes to master    (up to date)

我想要的是这样的:

$ git remote show origin
  [...]
  Remote branches:
    bar              tracked
    foo              tracked
    gh-pages         ignored
    master           tracked
  [...]

请注意,我确实想要跟踪几个分支,而我不想跟踪一个。我想指定后者,而不是前者。

我可以删除对 的本地引用origin/gh-pages,但下次我会回来git fetch

4

3 回答 3

18

自2020 年 10 月发布的 git 2.29 以来,您可以利用否定 refspec 来排除要获取的特定分支。

对于 GitHub Pages,您可以这样做:

git config --add remote.origin.fetch '^refs/heads/gh-pages'

和 Dependabot:

git config --add remote.origin.fetch '^refs/heads/dependabot/*'

您可以在https://github.blog/2020-10-19-git-2-29-released/#user-content-negative-refspecs上阅读更多相关信息

于 2020-10-20T05:49:15.727 回答
7

您可以修改 .gitconfig,因此它告诉git您只获取您想要的内容:

   fetch = +refs/heads/mybranch:refs/remotes/origin/mybranch

此外,您可以为获取所需内容的 fetch 创建别名:

 git fetch origin +refs/heads/mybranch:refs/remotes/origin/mybranch

创建别名就像在 .gitconfig 中添加新别名一样简单:

 [alias]
   myfetch= git fetch origin +refs/heads/mybranch:refs/remotes/origin/mybranch

更新:

您当然可以指定更多分支:

 git fetch origin +refs/heads/master:refs/remotes/origin/master +refs/heads/develop:refs/remotes/origin/develop
于 2013-05-30T17:37:55.267 回答
3

我只是遇到了同样的问题。我对 'bob' 的一个分支很感兴趣,但他有许多分支使我的git branch -a输出变得混乱。

我这样做了:

rm .git/refs/remotes/bob/{next,master,maint}

树枝不见了。虽然 git fetch 可能会恢复它们,但我不打算定期从 bob 获取。

于 2014-04-01T18:39:58.437 回答