Can git permanently ignore a remote branch?

2019-01-15 17:57发布

问题:

I'm using the Pages feature of GitHub. This works by putting the published HTML in a branch called gh-pages. I have two separate working directories, one for the project itself and one for the HTML docs.

In the former, I want to completely ignore the gh-pages branch, as it's an unrelated line of work and I don't want it to clutter up my various commit visualizations.

That is, what I have is:

$ 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)

and what I want is something like:

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

Note there are several branches that I do want to track, and just one that I don't. I want to specify the latter, not the former.

I can delete the local references to origin/gh-pages, but then it comes back next time I git fetch.

回答1:

You can modify the .gitconfig, so it tells git to fetch only what you just want:

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

Also, you can create an alias for the fetch which fetches what you want:

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

The creation of an alias is as simple as adding the new alias in .gitconfig:

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

UPDATE:

You can specify more branches of course:

 git fetch origin +refs/heads/master:refs/remotes/origin/master +refs/heads/develop:refs/remotes/origin/develop


回答2:

I just hit the same problem. I was interested in one branch from 'bob', but he had many branches cluttering up my git branch -a output.

I did this:

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

and the branches were gone. A git fetch might restore them though, but I don't intend to fetch from bob regularly.



标签: git branch