Se faccio una copia di una cartella tracciata usando rsync -a
o cp -R
, posso quindi usare la copia come se fosse un clone git, o causerà tutti i tipi di problemi strani? Tutto questo è in esecuzione sul mio computer, quindi nessun altro accede al repository.È sicuro utilizzare un repository git copiato?
Ovviamente, la directory git-cloned sa da dove è stata copiata, quindi posso fare git pull
senza specificare una fonte, ma supponendo che sono disposto a vivere senza, c'è qualcosa di cui devo preoccuparmi?
Come esperimento, ho creato un piccolo progetto, clone
it e rsync
ed esso e diff
e le cartelle risultanti. Ecco i risultati:
[email protected] ~
$ git clone project/.git project2
Initialized empty Git repository in /home/itsadok/project2/.git/
[email protected] ~
$ rsync -a project/ project3/
[email protected] ~
$ diff -r project2 project3
Only in project3/.git: COMMIT_EDITMSG
diff -r project2/.git/config project3/.git/config
7,12d6
< [remote "origin"]
< url = /home/itsadok/project/.git
< fetch = +refs/heads/*:refs/remotes/origin/*
< [branch "master"]
< remote = origin
< merge = refs/heads/master
Files project2/.git/index and project3/.git/index differ
diff -r project2/.git/logs/HEAD project3/.git/logs/HEAD
1c1
< 0000000000000000000000000000000000000000 bf6be23d68d0ede45aca7479795693bfba76e73a itsadok <[email protected](none)> 1242131284 +0300 clone: from /home/itsadok/project/.git
---
> 0000000000000000000000000000000000000000 bf6be23d68d0ede45aca7479795693bfba76e73a itsadok <[email protected](none)> 1242131066 +0300 commit (initial): first commit
diff -r project2/.git/logs/refs/heads/master project3/.git/logs/refs/heads/master
1c1
< 0000000000000000000000000000000000000000 bf6be23d68d0ede45aca7479795693bfba76e73a itsadok <[email protected](none)> 1242131284 +0300 clone: from /home/itsadok/project/.git
---
> 0000000000000000000000000000000000000000 bf6be23d68d0ede45aca7479795693bfba76e73a itsadok <[email protected](none)> 1242131066 +0300 commit (initial): first commit
Only in project2/.git/logs/refs: remotes
Only in project2/.git: packed-refs
Only in project2/.git/refs: remotes
C'è un po 'di differenza, ma la maggior parte di esso sembra essere circa il riferimento all'origine. Ho ragione?
non so la risposta, ma direi che sarebbe bene. Sono molto curioso del perché tu abbia bisogno di (vuoi?). –
La necessità è sorta per me già due volte, una volta per una cartella di backup su cui ho apportato alcune modifiche, e una volta quando volevo clonare un repository che si trovava su una macchina Windows dietro un NAT che non aveva sshd su di esso ... ma soprattutto, voglio avere una migliore comprensione di come funziona git. – itsadok