Saya menggunakan git pada proyek yang relatif kecil dan saya menemukan bahwa zipping konten direktori .git mungkin cara yang baik untuk membuat cadangan proyek. Tapi ini agak aneh karena, ketika saya mengembalikan, hal pertama yang perlu saya lakukan adalah git reset --hard
.
Apakah ada masalah dengan mencadangkan git repo dengan cara ini? Juga, apakah ada cara yang lebih baik untuk melakukannya (misalnya, format git portabel atau yang serupa?)?
git bundle
Jawaban:
Saya mulai sedikit meretas skrip Yar dan hasilnya ada di github, termasuk halaman manual dan instal skrip:
https://github.com/najamelan/git-backup
Instalasi :
Menyambut semua saran dan menarik permintaan di github.
sumber
sudo install.sh
, kemudian mengkonfigurasinya (menggunakan sistem konfigurasi git) untuk mengatur direktori tujuan (lihat file readme pada github). Selanjutnya Anda jalankangit backup
di dalam repositori Anda. Sebagai sidenote, ini adalah percobaan dengan bundel git dan respons terhadap pertanyaan ini, tetapi bundel git tidak pernah membuat salinan persis absolut (mis. Jika saya ingat dengan baik, terutama mengenai remote git), maka secara pribadi saya benar-benar menggunakan tar untuk cadangan. direktori git.Cara resmi lainnya akan menggunakan bundel git
Itu akan membuat file yang mendukung
git fetch
dangit pull
untuk memperbarui repo kedua Anda.Berguna untuk pencadangan dan pemulihan inkremental.
Tetapi jika Anda perlu mencadangkan semuanya (karena Anda tidak memiliki repo kedua dengan beberapa konten yang lebih lama sudah ada), cadangannya sedikit lebih rumit untuk dilakukan, seperti yang disebutkan dalam jawaban saya yang lain, setelah komentar Kent Fredric :
(Ini adalah operasi atom , yang bertentangan dengan membuat arsip dari
.git
folder, seperti yang dikomentari oleh fantabolous )Peringatan: Saya tidak akan merekomendasikan Pat Notz 's solusi , yang kloning repo.
Mencadangkan banyak file selalu lebih sulit daripada mencadangkan atau memperbarui ... hanya satu.
Jika Anda melihat sejarah suntingan dari OP Yar jawaban , Anda akan melihat bahwa Yar digunakan pada pertama
clone --mirror
, ... dengan edit:Solusi Yar saat ini menggunakan
git bundle
.Saya mengistirahatkan koper saya.
sumber
git bundle
. Tidak mungkin dengan zip global dari semua repo lokal.Cara saya melakukan ini adalah membuat repositori (telanjang) jarak jauh (pada drive terpisah, USB Key, server cadangan atau bahkan github) dan kemudian gunakan
push --mirror
untuk membuat repo jarak jauh itu terlihat persis seperti repositori lokal saya (kecuali remote itu kosong gudang).Ini akan mendorong semua referensi (cabang dan tag) termasuk pembaruan yang tidak maju cepat. Saya menggunakan ini untuk membuat cadangan dari repositori lokal saya.
The halaman manual menggambarkannya seperti ini:
Saya membuat alias untuk melakukan push:
Lalu, saya hanya menjalankan
git bak
setiap kali saya ingin melakukan backup.sumber
--mirror
sebenarnya tidak menjalankan verifikasi apa pun pada objek yang didapatnya. Anda mungkin harus berlarigit fsck
di beberapa titik untuk mencegah korupsi.[Hanya meninggalkan ini di sini untuk referensi saya sendiri.]
Skrip bundel saya disebut
git-backup
seperti iniTerkadang saya menggunakan
git backup
dan terkadang saya menggunakangit backup different-name
yang memberi saya sebagian besar kemungkinan yang saya butuhkan.sumber
--global
opsi alias ini hanya akan terlihat di proyek Anda (ini ditolak di.git/config
file Anda ) - itu mungkin yang Anda inginkan. Terima kasih atas jawaban yang lebih terperinci dan diformat dengan baik.Kedua jawaban untuk pertanyaan ini benar, tetapi saya masih kehilangan solusi lengkap dan singkat untuk mencadangkan repositori Github ke file lokal. The Inti tersedia di sini, jangan ragu untuk garpu atau beradaptasi dengan kebutuhan Anda.
backup.sh:
restore.sh:
sumber
Anda dapat membuat cadangan git repo dengan git-copy . git-copy menyimpan proyek baru sebagai repo kosong, itu berarti biaya penyimpanan minimum.
Kemudian Anda dapat memulihkan proyek Anda dengan
git clone
sumber
Menemukan cara resmi yang sederhana setelah mengarungi dinding teks di atas yang akan membuat Anda berpikir tidak ada.
Buat bundel lengkap dengan:
Kembalikan dengan:
Operasi ini adalah atom AFAIK. Periksa dokumen resmi untuk rincian berpasir.
Mengenai "zip": bundel git dikompresi dan sangat kecil dibandingkan dengan ukuran folder .git.
sumber
sampai pada pertanyaan ini melalui google.
Inilah yang saya lakukan dengan cara paling sederhana.
kemudian buat cabang git baru dari cabang ini
kembali ke cabang asli dan lanjutkan:
Dengan asumsi Anda mengacaukan dan perlu memulihkan sesuatu dari cabang cadangan:
Bagian terbaik jika ada yang kacau, Anda bisa menghapus cabang sumber dan kembali ke cabang cadangan !!
sumber