2013-05-30 15 views
14

Sto utilizzando la funzionalità Pagine di GitHub. Funziona inserendo l'HTML pubblicato in un ramo chiamato gh-pages. Ho due directory di lavoro separate, una per il progetto stesso e una per i documenti HTML.È possibile ignorare in modo permanente un ramo remoto?

Nel primo caso, voglio ignorare completamente il ramo gh-pages, poiché si tratta di una linea di lavoro non correlata e non voglio che ingombra le mie varie visualizzazioni di commit.

Cioè, quello che ho è:

$ git remote show origin 
* remote origin 
    Fetch URL: [email protected]:reidpr/quac.git 
    Push URL: [email protected]: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) 

e quello che voglio è qualcosa di simile:

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

Nota ci sono diversi rami che ho faccio desidera tenere traccia, e basta uno che non lo faccio. Voglio specificare quest'ultimo, non il primo.

Posso eliminare i riferimenti locali a origin/gh-pages, ma poi ritorna la volta successiva I git fetch.

risposta

5

È possibile modificare l'.gitconfig, quindi dice git per andare a prendere solo ciò che si desidera solo:

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

Inoltre, è possibile creare un alias per il recupero, che recupera ciò che si vuole:

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

la creazione di un alias è semplice come l'aggiunta del nuovo alias in .gitconfig:

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

UPDATE:

È possibile specificare più rami, naturalmente:

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

C'è qualcosa che mi permetterà di recuperare tutto * tranne * quello che non voglio? Nell'esempio sopra c'è solo un ramo remoto che voglio, ma in realtà ce ne sono diversi, ed è solo uno che non voglio. – Reid

+1

@Reid Unfortunatelly, non so dell'esaltazione direzionale di un ramo particolare. Ho a kleast fornito un aggiornamento nella risposta, che mostra come specificare più rami che vogliono essere recuperati. –

+3

Un'opzione potrebbe essere quella di utilizzare uno script agganciato per post-ricevere per eliminare il ramo offendente. Non ho ancora pensato completamente a una risposta. – jb510

4

ho appena colpito lo stesso problema. Mi interessava un ramo di "bob", ma aveva molti rami che ingombravano il mio output git branch -a.

ho fatto questo:

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

ei rami erano spariti. Tuttavia, un recupero di git potrebbe ripristinarli, ma non ho intenzione di recuperare regolarmente da bob.

Problemi correlati