2014-11-14 14 views
6

Quindi sto cercando di capire come funziona Git, e ho bisogno (perché ho questa necessità che non entrerò) di essere in grado di prendere il file da un repository, tramite riga di comando, e li metti in un repository nuovo di zecca SENZA aver preso tutta la storia precedente del commit con esso.Clonazione di un repository Git in un nuovo repository - senza cronologia commit

Quello che sto cercando di fare al momento è git init per creare un nuovo repository, e quindi prendere i file dal mio repository esistente, sia usando clone o sottoalbero (non ho ancora avuto la testa intorno a questo ancora così potrebbe essere abbaiare dall'albero sbagliato), quindi aggiungere, commettere e quindi inviarli al mio nuovo repository.

git init 
--- get the files from stock repo --- 
git add . 
git commit -m 'Initial commit' 
git remote add origin <url of my new repo> 
git push -u origin master 

miei repository sono tutti su Bitbucket, se questo fa la differenza,

+0

si può non solo rsync i file da qualche altra parte e poi 'git init' lì? –

+0

sì, sembra poco professionale se ci sono troppe parolacce e cose simili in un pronti contro termine: P –

risposta

14

È possibile clonare il vecchio repository come:

git clone [email protected]:username/repository.git 

e quindi si elimina la directory git:

rm -R .git/ 

Ora è creare il nuovo repository:

git init 
+0

Ha funzionato perfettamente, grazie! – Tom

1

Se si dispone di tali file a magazzino pronti contro termine clonati da qualche parte, si può fare un:

cd yourNewRepo 
git --work-tree=/path/to/stock/repo add . 
git commit -m 'Initial commit' 

Ciò significa: stai considerando i file da /path/to/stock/repo come il tuo albero di lavoro per il tuo nuovo repository (solo per il passo git add)

Una volta che l'indice del nuovo repository ha registrato questi file, puoi dimenticarti del repository azionario e trasferire quei nuovi file (senza alcuna cronologia precedente) nel tuo nuovo repository.

1

Se hai già ottenuto il repository TMI clonato puoi resettare il master del clone in modo che solo il suggerimento di uno solo per storico y con

git branch -f master `git commit-tree -m "My new initial commit" origin/master^{tree}` 

e poi fare come al solito, sistemare i telecomandi e spingere storie intorno come come ti piace.

(modificare: se hai padrone estratto git branch non vorranno riscrivere l'arbitro, ma non sta toccando il contenuto a tutti, quindi è possibile ignorare tutto handholding della porcellana e just do it

git update-ref -m "Truncating history" refs/heads/master \ 
     `git commit-tree -m "My new initial commit" origin/master^{tree}` 

)

Problemi correlati