Bagaimana cara mencadangkan git repo?

26

Saya berencana untuk beralih dari SVN ke git. Dengan svn saya hanya menyalin folder repo saya ketika saya ingin mencadangkannya. Namun git tidak memilikinya jadi apa yang harus saya lakukan?

Haruskah saya membuat klon pada drive terpisah dan memperbarui dengan menarik dari proyek saya? Lalu saya dapat membakar / mengarsipkan folder ini dan akan memiliki semua riwayat?

Ini mungkin jelas tetapi saya ingin memastikan ketika datang ke cadangan. Saya masih berpura-pura ada repositori root.

Sathyajith Bhat
sumber
Lihat juga: Cadangkan repositori GitHub (jawabannya juga berfungsi untuk proyek-proyek git-GitHub)
Martin Thoma

Jawaban:

14

Anda cukup menyalinnya. git memang menggunakan folder repo, itu hanya disembunyikan dari tampilan direktori normal. (Folder ini dinamai .gitpada sistem * nix, jadi itu hanya muncul jika Anda menggunakan ls -a. Saya berasumsi bahwa ia menetapkan atribut "tersembunyi" di Windows, tapi saya tidak pernah menggunakan git di lingkungan Windows, jadi saya tidak yakin tentang bagaimana itu ditangani di sana.)

Dave Sherohman
sumber
Ada beberapa file proyek di bagasi saya saya abaikan. Jadi saya benar-benar dapat menyalinnya? (Saya akan menganggap itu bekerja dengan cara yang sama seperti linux). Jadi, apakah tiruan hanya salinan file? Saya kira jika saya menarik semua data yang saya inginkan ada di folder. Saya memeriksa ada file .git tetapi ada file .svn di bagasi svn saya dan tidak berpikir untuk memeriksa apakah data riwayat ada di sana
2
Di Windows, itu masih .git, dengan atribut "Tersembunyi".
grawity
1
@ acidzombie24: .gitDirektori ini berisi seluruh negara repositori, termasuk sejarah. (Itulah bagian "didistribusikan".)
grawity
5
@grawity: ini lebih merupakan bagian "selfcontained", bagian terdistribusi adalah ketika Anda bertukar beda antara repositori selfcontained :)
akira
19

Jawaban akira sudah benar, tetapi Anda dapat menambahkan --mirror untuk membuat repo kosong (untuk cadangan yang sedikit lebih kecil).

Kami menggunakan strategi berikut (hampir persis):

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

Kemudian, untuk memulihkan dari cadangan Anda:

tar xjf backup.repo.tar.bz2
git clone backup.repo yourrepo
akirisol
sumber
2
Ini membantu, terima kasih. Bagaimana cara menggunakan repo yang dicadangkan untuk memulihkan pohon kerja?
Jonathan Day
10

Saya menggunakan bundel git . Untuk membuat file salinan (satu file cadangan) jalankan:

git bundle create backup.bundle master

Untuk mengembalikan repositori dengan master cabang cukup tiruan file backup.bundle:

git clone backup.bundle -b master my-project
MariuszS
sumber
2

buat klon baru di tempat lain:

 % git clone yourepo somewhereelse

btw, git memiliki folder repo, Anda dapat menemukannya di copy pekerjaan Anda di bawah subdirektori .git. setiap copy pekerjaan memiliki "folder repo" itu.

akira
sumber
10
Saya tidak berpikir klon dapat diterima sebagai cadangan, karena itu bukan salinan yang tepat. Setidaknya cabang-cabang terpencil dari repo kloning akan hilang di klon, dan cabang-cabang repo kloning akan muncul sebagai cabang-cabang terpencil di klon.
sleske