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))
fonte
2012-07-27 00:37:52
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
Sì, sarà più semplice, ma hai perso le informazioni sulla base dei dati generati dal sito, a meno che non utilizzi i sottomoduli. –
Mi dispiace ma non capisco cosa stai dicendo. Cosa intendi? – edhedges