Jak wykonać kopię zapasową repozytorium git?

26

Planuję zmienić SVN na GIT. Za pomocą svn po prostu kopiuję folder repo, kiedy chcę go wykonać kopię zapasową. Jednak git nie ma takiego, więc co mam zrobić?

Czy powinienem utworzyć klon na osobnym dysku i aktualizować, pobierając z mojego projektu? Czy mogę nagrać / zarchiwizować ten folder i będzie on zawierał całą historię?

Jest to prawdopodobnie oczywiste, ale chcę się upewnić, jeśli chodzi o kopie zapasowe. Nadal udaję, że istnieje repozytorium root.

Sathyajith Bhat
źródło
Zobacz także: Wykonaj kopię zapasową repozytorium GitHub (odpowiedzi działają również w przypadku projektów innych niż GitHub)
Martin Thoma,

Odpowiedzi:

14

Po prostu skopiuj to. git ma używać folder repo, to jest po prostu ukryty od normalnych widoków katalogowych. (Folder ma nazwę .gitw systemach * nix, więc pojawia się tylko wtedy, gdy go używasz ls -a. Zakładam, że ustawia on atrybut „ukryty” w systemie Windows, ale nigdy nie korzystałem z git w środowisku Windows, więc nie jestem pewien jak sobie z tym poradzić).

Dave Sherohman
źródło
W moim bagażniku jest kilka plików projektu, które ignoruję. Więc dosłownie mogę to skopiować? (założę, że działa tak samo jak Linux). Czy klon jest tylko kopią pliku? Myślę, że jeśli wyciągnę wszystkie potrzebne dane, będzie w folderze. Sprawdziłem, czy są pliki .git, ale w moim pniu svn są pliki .svn i nie pomyślałem, aby sprawdzić, czy są tam dane historyczne
2
W systemie Windows jest nadal .gitz atrybutem „Ukryty”.
grawitacja
1
@ acidzombie24: .gitKatalog zawiera cały stan repozytorium, w tym historię. (To jest część „rozproszona”.)
grawity
5
@grawity: jest to bardziej część „samodzielna”, część rozproszona ma miejsce, gdy wymieniasz różnice między samodzielnymi repozytoriami :)
akira
19

Odpowiedź Akira jest poprawna, ale możesz dodać opcję --mirror, aby utworzyć zwykłe repozytorium (w przypadku nieco mniejszej kopii zapasowej).

Stosujemy następującą strategię (prawie dokładnie):

git clone --mirror yourrepo backup.repo
tar cjf backup.repo.tar.bz2 backup.repo
scp backup.tar.bz2 ssh://somewhereelse

Następnie, aby odzyskać dane z kopii zapasowej:

tar xjf backup.repo.tar.bz2
git clone backup.repo yourrepo
akirisol
źródło
2
To jest pomocne, dzięki. Jak użyć kopii zapasowej repozytorium, aby przywrócić działające drzewo?
Jonathan Day
10

Używam pakietu git . Aby utworzyć plik kopii (jeden plik kopii zapasowej), wykonaj:

git bundle create backup.bundle master

Aby przywrócić repozytorium za pomocą gałęzi master, wystarczy sklonować plik backup.bundle:

git clone backup.bundle -b master my-project
Mariusz S.
źródło
2

utwórz nowy klon gdzieś indziej:

 % git clone yourepo somewhereelse

btw, git ma folder repo, możesz go zlokalizować w kopii roboczej pod podkatalogiem .git. każda kopia robocza ma ten „folder repo”.

akira
źródło
10
Nie sądzę, że to klon jest dopuszczalne jako zapasowy, jak to jest nie dokładna kopia. W klonie brakuje przynajmniej odległych gałęzi sklonowanego repozytorium, a gałęzie sklonowanego repo pojawią się jako odległe gałęzie w klonie.
sleske,