2012-07-26 7 views

risposta

10

Sembra che tutto quello che volete è di avere un ramo di sviluppo e un ramo maestro che conterrà uno specchio del contenuto di alcune cartelle, dicono _SITE.

Facciamolo! Ok. Presumo che tu abbia un repository con un ramo di sviluppo che contiene tutto il personale e la cartella _site che vuoi "esportare".

Consente di creare un commit che contiene solo il contenuto della cartella _site.

echo 'Fill with a meaningful description' | git commit-tree development^{tree}:_site crea un commit e genera il suo id. Era 47651a42.... È diverso da sul tuo computer.

Si noti che development^{tree}:_site è una revisione (somma sha1) dell'albero che corrisponde alla cartella _site nella radice dell'ultimo commit sul ramo development.

E ora fare maestro punto di diramazione per questo commettere: git update-ref refs/heads/master 47651a42

Ora git log master mostrare quanto segue sulla mia macchina

commit 47651a42e6800f399c4352d0416f4ca96895f099 
Author: Aleksandr Priymak <[email protected]> 
Date: Fri Jul 27 05:27:43 2012 +0400 

    first commit 

Se si verifica questo ramo si ottiene il contenuto della cartella _SITE ! È semplice C'è solo una cosa rimasta. Il commit 47651a42 non ha genitori quindi sarà necessario aggiungere -f al comando git push per inviare il master aggiornato. L'altro modo è specificare il genitore. Per fare questo uso questo comando

echo 'Fill with a meaningful description' | git commit-tree dev^{tree}:_site -p $(cat .git/refs/heads/master)

Si può fare questo usando il seguente one-liner

git update-ref refs/heads/master $(echo 'Add commit message here!' | git commit-tree dev^{tree}:_site -p $(cat .git/refs/heads/master)) 
+0

Ho fatto qualcosa di simile a questo, tranne io non voglio in realtà hanno _SITE nel master repo Voglio solo il contenuto e quando ho eseguito 'git add _site/*' ho pensato di ottenerlo ma in realtà ha aggiunto _site e il suo contenuto. Sarebbe semplicemente più semplice avere due repository git uno dentro _site e uno all'interno della directory myusername.github.com con un sito .gitignore? – edhedges

+1

Sì, sarà più semplice, ma hai perso le informazioni sulla base dei dati generati dal sito, a meno che non utilizzi i sottomoduli. –

+0

Mi dispiace ma non capisco cosa stai dicendo. Cosa intendi? – edhedges

Problemi correlati