git可以永久忽略远程分支吗?

Rei*_*eid 21 git branch

我正在使用GitHub的Pages功能.这通过将已发布的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)
Run Code Online (Sandbox Code Playgroud)

而我想要的是:

$ git remote show origin
  [...]
  Remote branches:
    bar              tracked
    foo              tracked
    gh-pages         ignored
    master           tracked
  [...]
Run Code Online (Sandbox Code Playgroud)

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

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

Pow*_*iKi 12

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

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

git config --add remote.origin.fetch '^refs/heads/gh-pages'
Run Code Online (Sandbox Code Playgroud)

和 Dependabot:

git config --add remote.origin.fetch '^refs/heads/dependabot/*'
Run Code Online (Sandbox Code Playgroud)

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

  • 您可能需要将命令引用为 `git config --add remote.origin.fetch '^refs/heads/dependabot/*'`,具体取决于您的 shell。 (3认同)

Ond*_*rka 6

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

   fetch = +refs/heads/mybranch:refs/remotes/origin/mybranch
Run Code Online (Sandbox Code Playgroud)

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

 git fetch origin +refs/heads/mybranch:refs/remotes/origin/mybranch
Run Code Online (Sandbox Code Playgroud)

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

 [alias]
   myfetch= git fetch origin +refs/heads/mybranch:refs/remotes/origin/mybranch
Run Code Online (Sandbox Code Playgroud)

更新:

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

 git fetch origin +refs/heads/master:refs/remotes/origin/master +refs/heads/develop:refs/remotes/origin/develop
Run Code Online (Sandbox Code Playgroud)

  • 有什么东西可以让我取出所有*除了*我不想要的东西?在上面的例子中,只有一个我想要的远程分支,但实际上有几个,而且它只是我不想要的一个. (8认同)
  • 一种选择可能是使用钩住后接收的脚本来删除违规分支.虽然没有充分考虑通过答案. (4认同)