Seguito di questa domanda: se ho un clone superficiale, come recuperare tutti i commit più vecchi per renderlo un clone completo?
Seguito di questa domanda: se ho un clone superficiale, come recuperare tutti i commit più vecchi per renderlo un clone completo?
Risposte:
EDIT: git fetch --unshallow
ora è un'opzione (grazie Jack O'Connor).
Puoi correre git fetch --depth=1000000
(presupponendo che il repository abbia meno di un milione di commit).
git fetch --unshallow
esiste (come nella risposta di @ sdram), questa risposta non è più la migliore.
git fetch --depth=2147483647
è la massima profondità possibile da fornire al comando.
git fetch --unshallow
, ma non mostra ancora tutti i rami.
Il comando seguente (versione 1.8.3 di git) convertirà il clone shallow in uno normale
git fetch --unshallow
Quindi, per ottenere l'accesso a tutte le filiali su origine (grazie @Peter nei commenti)
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*";
git fetch origin
da una risposta dovrebbe esserci la stessa modifica di .git / config a mano
git fetch --unshallow --update-head-ok origin '+refs/heads/*:refs/heads/*'
ha funzionato per me
Avevo bisogno di approfondire un repository solo fino a un determinato commit.
Dopo aver letto man git-fetch
, ho scoperto che non è possibile specificare un commit, ma è possibile specificare una data:
git fetch --shallow-since=15/11/2012
Per coloro che hanno bisogno di un approfondimento incrementale, un'altra man
citazione:
--deepen=<depth>
Simile a --depth, tranne per il fatto che specifica il numero di commit dal limite superficiale corrente anziché dalla punta della cronologia di ciascun ramo remoto.
Nessuno dei messaggi sopra ha fatto il trucco. Sto cercando di lavorare con i tag git a partire da un clone superficiale.
Prima ho provato
git fetch --update-shallow
che tipo di lavoro ha funzionato a metà strada. Tuttavia, nessun tag disponibile!
git fetch --depth=1000000
Quest'ultimo comando ha davvero recuperato i tag e ho potuto finalmente eseguire
git checkout -b master-v1.1.0 tags/v1.1.0
ed essere fatto con esso.
HTH
Due modi per ottenere il clone superficiale al clone profondo. :
Utilizzato i seguenti passi per scaricare il ramo: (Questo scarica la copia superficiale del ramo e poi lo converte in un clone completo, cioè porta il ramo completo e la sua storia).
un. git clone -b branch http: //git.repository/customSP01.git --depth 1
Questo fa un clone superficiale (con l'opzione di profondità) recupera solo un singolo ramo (alla profondità richiesta).
b. cd customSP01
c. git fetch –depth=100
d. get fetch –depth=500
....
e. git fetch –unshallow
// Il comando sopra convertirà il clone superficiale in uno normale. Tuttavia, questo non porta tutti i rami:
Quindi, per ottenere l'accesso a tutte le filiali.
f. git remote set-branches origin '*'
[Questo passaggio può essere eseguito anche manualmente modificando la riga seguente in .git / config.
fetch = + refs / heads / master: refs / telecomandi / origin / master
a (sostituisci master con *):
fetch = + refs / heads / *: refs / telecomandi / origin / *]
g. git fetch -v
Questo converte il clone superficiale in clone profondo con tutti i dettagli di storia e ramo.
È possibile evitare i passaggi feg, se si utilizza il comando seguente invece del comando presente nel passaggio a. fare il clone superficiale:
git clone -b branch --no-single-branch http: //git.repository/customSP01.git --depth 1