Questo è il comando git-clone-subset che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS
PROGRAMMA:
NOME
git-clone-subset - Clona un sottoinsieme di un repository git
SINOSSI
git-clone-sottoinsieme [Opzioni] deposito destinazione-dir modello
DESCRIZIONE
Cloni a deposito in destinazione-dir e gira sul clone
git ramo-filtro --prune-vuoto --filtro-albero 'idiota rm ...' -- --tutti
per eliminare dalla cronologia tutti i file tranne quelli corrispondenti modello, creando efficacemente a
clone con un sottoinsieme di file (e cronologia) del repository originale.
Utile per creare un nuovo repository da un insieme di file da un altro repository,
migrando (solo) la cronologia associata. Molto simile a cosa
git ramo-filtro --filtro-sottodirectory
lo fa, ma per un modello di file anziché solo una singola directory.
VERSIONI
-h, --Aiuto
mostrare le informazioni sull'utilizzo.
deposito
URL o percorso locale del repository git da clonare.
destinazione-dir
Directory per creare il clone. Si applicano le stesse regole per git-clone: sarà
creato se non esiste e deve essere vuoto altrimenti. Ma, a differenza di git-
clone, questo argomento non è facoltativo: git-clone utilizza diverse regole per determinare
il nome dir "Humane" di un repository clonato e git-clone-subset non rischierà di essere analizzato
il suo output, figuriamoci prevedere il nome scelto.
modello Pattern glob per abbinare i file/dir desiderati. Sarà infine valutato da a
chiama bash, NON git o sh, usando il glob esteso '!( )' regola. Citalo o
evitalo sulla riga di comando, in modo che non venga valutato prematuramente dal tuo
guscio attuale. È consentito un solo modello: se ne servono di più, utilizzare
"|" di extglob sintassi. I globi verranno valutati con il set dotglob di shopt di bash, quindi
attenzione. I modelli non devono contenere spazi o caratteri speciali come " ' $ ( ) { } `,
nemmeno tra virgolette o caratteri di escape, poiché ciò potrebbe interferire con la sintassi !() dopo
espansione del modello.
Esempi di modelli:
"*.png"
"*.png|*icona*"
"*.h|src/|lib"
LIMITAZIONI
I nomi non vengono seguiti. Come soluzione alternativa, elenca la cronologia di ridenominazione con "git log --follow"
--name-status --format='%H' -- file | grep "^[RAD]"' e includi tutti i nomi multipli di a
file nel pattern, come in "currentname|oldname|initialname". Come effetto collaterale, se a
si è verificato un file diverso di un vecchio nome, verrà conservato anche questo e non c'è
aggirare questo utilizzando questo strumento.
Non esiste un modo (semplice) per mantenere alcuni file in una directory: l'uso di 'dir/foo*' come pattern non lo farà
opera. Quindi mantieni l'intera directory e rimuovi i file in seguito, usando git filter-branch e a
(abbastanza complessa) combinazione di clonazione, aggiunta remota, rebase, ecc.
La corrispondenza dei modelli è piuttosto limitata e molti degli escape e delle citazioni di bash non funzionano
correttamente quando il pattern è espanso all'interno di !().
Usa git-clone-subset online usando i servizi onworks.net