Jadual Kandungan
Latar Belakang
GIT LFS (Storan Fail Besar)
Migrasi
Idea asas lfs migrasi: lfs menulis semula sejarah tempatan—> kesan migrasi.
迁移一些补充说明
清理前后仓库对比
Rumah alat pembangunan git Ketahui pelangsingan gudang GIT dan arahan penghijrahan GIT LFS dalam sepuluh minit

Ketahui pelangsingan gudang GIT dan arahan penghijrahan GIT LFS dalam sepuluh minit

Jan 07, 2022 pm 05:17 PM
git

Artikel ini membawa anda pengetahuan yang berkaitan tentang pelangsingan gudang GIT dan arahan penghijrahan GIT LFS Saya harap ia akan membantu semua orang.

Ketahui pelangsingan gudang GIT dan arahan penghijrahan GIT LFS dalam sepuluh minit

Latar Belakang

Saya menggunakan CI/CD pada beberapa projek git dan mendapati klon jenkins git gagal, dan menetapkan kedalaman dan masa klon gagal. Kami hanya boleh mempertimbangkan strategi seperti pengecilan saiz gudang. Didapati bahawa gudang mempunyai banyak fail binari, dan fail binari ini berubah dengan agak kerap Operasi ini akan menyebabkan gudang git berkembang dengan pesat dan Git itu sendiri hanya sesuai untuk menguruskan fail teks.

Izinkan saya memberitahu anda satu lagi kisah silam yang menarik. Saya pernah mempunyai rakan sekerja yang berminat dalam pengaturcaraan grafik git untuk menguruskannya. Projek syarikat kecil kerap berubah, menyebabkan tiada Berapa lama masa yang diambil untuk cakera keras pelayan git dalaman syarikat diisi oleh beberapa gudang gitnya?

GIT LFS (Storan Fail Besar)

Walaupun git tidak pernah sesuai untuk menguruskan fail binari, git kini nampaknya menyediakan git lfs, pemalam khusus untuk menguruskan fail besar, secara lalai .

Prinsip asasnya ialah menggunakan penuding fail (teks) dan bukannya storan fail sebenar Git hanya menyimpan sejarah perubahan penuding fail dan bukannya keseluruhan fail binari, dan secara automatik menyediakan cangkuk ini adalah mudah untuk operasi seperti klon, tarik, set semula, dan lain-lain untuk mendapatkan fail binari sumber secara automatik penunjuk fail ini Begitu juga, apabila mengemas kini komit fail binari, git akan menukar fail sumber secara automatik menjadi penunjuk fail dan memasukkannya ke dalam. git log, dan pada masa yang sama, fail sumber akan dimuat naik ke lfs. Jadi pada peringkat pengguna, penggunaan GIT LFS sebenarnya tidak masuk akal.

Migrasi

Di atas secara ringkas memperkenalkan GIT LFS Seterusnya, kita akan bercakap secara langsung tentang bagaimana untuk berhijrah secara langsung dan bukannya cara menggunakan LFS dari awal.
Ini kerana selalunya apabila menggunakan gudang git, anda mendapati gudang itu sangat besar dan klon sangat perlahan, dan kemudian anda berfikir untuk menggunakan LFS.

Penghijrahan memerlukan kami mempunyai hak pentadbir gudang dan menyahlindungi cawangan yang dilindungi; Penghijrahan LFS khusus dibahagikan kepada langkah berikut.

Sebaik-baiknya buat sandaran sebelum berhijrah dan berkomunikasi dengan baik dengan rakan sekerja pasukan Lagipun, operasi itu melibatkan -f operasi berisiko tinggi , dan mudah untuk dipersalahkan.

Konfigurasi pelayan GIT LFS

Jika anda membina beberapa perkhidmatan git bina sendiri, anda mungkin perlu mendayakan LFS pada bahagian pelayan, seperti gitlab.

Pemasangan klien GIT LFS

Pakej pemasangan git untuk tingkap disertakan dengan pemalam ini Tiada pemasangan tambahan diperlukan, pautan.

Cuba arahan berikut pada baris arahan.

git lfs

Jika terdapat maklumat yang serupa dengan output dokumen bantuan, ini bermakna sudah ada klien git lfs.

git-lfs/2.11.0 (GitHub; windows amd64; go 1.14.2; git 48b28d97)git lfs <command> [<args>]Git LFS is a system for managing and versioning large files in
association with a Git repository.  Instead of storing the large files
within the Git repository as blobs, Git LFS stores special "pointer
files" in the repository, while storing the actual file contents on a
Git LFS server.  The contents of the large file are downloaded
automatically when needed, for example when a Git branch containing
the large file is checked out.Git LFS works by using a "smudge" filter to look up the large file
contents based on the pointer file, and a "clean" filter to create a
new version of the pointer file when the large file's contents change.It also uses a pre-push hook to upload the large file contents to
the Git LFS server whenever a commit containing a new large file
version is about to be pushed to the corresponding Git server.</args></command>
Salin selepas log masuk
Kemudian anda perlu melaksanakan perintah berikut untuk mengkonfigurasi persekitaran global LFS Ia hanya perlu dikonfigurasikan sekali, dan cangkuk gudang semasa juga akan dikemas kini

<.>git lfs install

Pindahkan gudang sejarah tempatan

Idea asas lfs migrasi: lfs menulis semula sejarah tempatan—> kesan migrasi.

Jadi lebih baik kita menyegerakkan gudang tempatan dengan yang jauh, dan mencipta cawangan tempatan untuk semua cawangan terpencil

Kemudian cd ke gudang tempatan anda dan laksanakan arahan berikut, –include mengandungi ungkapan glob, Tambah nama fail yang anda mahu LFS uruskan, –semuanya mewakili semua cawangan tempatan

git lfs migrate import --include="*.bin,*.lib,*.so,*.dll,*.a,*.param,*.zip,*.gz" --everything
Salin selepas log masuk
Selepas menulis semula cawangan tempatan, teg, dll.,
migrate: Sorting commits: ..., done.
migrate: Rewriting commits: 100% (193/193), done.
  develop                       bacb490a80ea46d73bd3866c2e7cf7ad199ce5eb -> 72884bcb4629417bad73ea3d485d08a0708909cd
  feature/npu-platform          a3645632756becc527c7f4d58514b3c479f824d3 -> e227900a3903b3a6955e4dffee48daeceac6cdff
  master                        1ccdecdcb4b5d6224a6e24c6f87793bfcc15ee4c -> 1d9fc2139600ef3d92a20d65bb5db89021b8c488
  0.1.0                         07c6b2aa732506f1cc88cedb551f37f376b6efa6 -> 8e55193221dfca9f6bb28ccd9cca85af9c5958c9
  1.0.0                         0f694efcd7aa9df641836e1ea6eebbb730b940b5 -> 3f9e77575120b6e56b34790c998a362116da75f5
migrate: Updating refs: ..., done.
Salin selepas log masuk

kami boleh melaksanakannya di sini dahulu

git lfs ls-files

Semak fail mana yang telah ditukar kepada pengurusan lfs dan semak jika terdapat sebarang peninggalan
Ketahui pelangsingan gudang GIT dan arahan penghijrahan GIT LFS dalam sepuluh minitPada masa ini, tidak kira cawangan mana anda berada, Fail .gitattributes akan muncul , dan kandungan yang serupa dengan yang berikut akan ditambahkan.

Pada masa yang sama, anda dapat melihat bahawa semua fail perduaan kami telah ditukar kepada bentuk teks berikut
*.bin filter=lfs diff=lfs merge=lfs -text
*.lib filter=lfs diff=lfs merge=lfs -text
*.so filter=lfs diff=lfs merge=lfs -text
*.dll filter=lfs diff=lfs merge=lfs -text
*.a filter=lfs diff=lfs merge=lfs -text
*.param filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
Salin selepas log masuk

Sahkan bahawa ia betul, dan kemudian ia boleh ditolak ke hujung terpencil;
version https://git-lfs.github.com/spec/v1
oid sha256:9171c8350d72ccca6ad60ac80b577157ad1f9fd44ca05744216e02ccbfcdf491
size 10260
Salin selepas log masuk
Disebabkan lfs Migrasi akan menulis semula semua komit dan mengubah suai nilai cincang, jadi kita perlu menambah –froce

Langkah ini memerlukan pembatalan cawangan yang dilindungi (cawangan yang dilindungi tidak boleh -f)

penghijrahan gudang terpencil seperti itu selesai
git push --force --all
Salin selepas log masuk

迁移一些补充说明

  1. 迁移者的本地仓库lfs文件转源文件:经过以上步骤,由于我们将所有文件都已经转成文件指针,我们需要将文件下载回来才能正常使用该仓库。
    需要注意,其他人重新clone 或者同步 lfs迁移过的remote仓库 是不需要该步,只针对迁移作者本地的仓库。
git lfs pull
Salin selepas log masuk
  1. 团队中其他成员迁移前的本地仓库同步: 由于远程仓库的历史已经被全部重写,所以无法直接同步,最好是删除本地分支,重新拉取远程分支,如果本地已经有部分commit需要提交,可以重名本地分支,拉取远程再做cherry pick。git tag 同理,删除迁移前的tag。
  2. 本地仓库清理:上面的迁移成功将二进制文件迁移成git lfs 对象,git log 也不在存储源文件文件变更而是指针变更,但是在本地.git文件夹中仍存在之前不再需要的git log 缓存,执行以下命令做清理。
git reflog expire --expire-unreachable=now --all
git gc --prune=now
Salin selepas log masuk

清理前后仓库对比

lfs直观来讲更多的是针对仓库大clone慢的问题,我这边lfs迁移前后各备份各一个小型远程仓库做测试,
用的测试仓库二进制文件比较小,总大50m内,且变更次数也在个位数。
clone下来的仓库大小对比。
和我预估差不多,总的来说更适合二进制文件频繁变更,如果单纯是文件大,但文件不变更的话,在clone的时候区别不大,毕竟lfs在clone仍有下载源文件的步骤,除开下载,操作文件指针对git来说理论仍会有性能提升,但是可能感知不强。
Ketahui pelangsingan gudang GIT dan arahan penghijrahan GIT LFS dalam sepuluh minit

推荐学习:《Git教程

Atas ialah kandungan terperinci Ketahui pelangsingan gudang GIT dan arahan penghijrahan GIT LFS dalam sepuluh minit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menjana kunci ssh dalam git Cara menjana kunci ssh dalam git Apr 17, 2025 pm 01:36 PM

Untuk selamat menyambung ke pelayan Git Jauh, kunci SSH yang mengandungi kekunci awam dan swasta perlu dijana. Langkah -langkah untuk menghasilkan kunci SSH adalah seperti berikut: Buka terminal dan masukkan perintah SSH -Keygen -T RSA -B 4096. Pilih lokasi penjimatan utama. Masukkan frasa kata laluan untuk melindungi kunci peribadi. Salin kunci awam ke pelayan jauh. Simpan kunci peribadi dengan betul kerana ia adalah kelayakan untuk mengakses akaun.

Cara memadam repositori dengan git Cara memadam repositori dengan git Apr 17, 2025 pm 04:03 PM

Untuk memadam repositori Git, ikuti langkah -langkah ini: Sahkan repositori yang anda mahu padamkan. Penghapusan repositori tempatan: Gunakan perintah RM -RF untuk memadam foldernya. Jauh memadam gudang: Navigasi ke tetapan gudang, cari pilihan "Padam Gudang", dan sahkan operasi.

Cara mengesan ssh dengan git Cara mengesan ssh dengan git Apr 17, 2025 pm 02:33 PM

Untuk mengesan SSH melalui Git, anda perlu melakukan langkah -langkah berikut: menghasilkan pasangan kunci SSH. Tambah kunci awam ke pelayan Git. Konfigurasikan Git untuk menggunakan SSH. Uji sambungan SSH. Menyelesaikan masalah yang mungkin mengikut keadaan sebenar.

Cara Menambah Kekunci Awam ke Akaun Git Cara Menambah Kekunci Awam ke Akaun Git Apr 17, 2025 pm 02:42 PM

Bagaimana untuk menambah kunci awam ke akaun Git? Langkah: Menjana pasangan kunci SSH. Salin kunci awam. Tambah kunci awam di Gitlab atau GitHub. Uji sambungan SSH.

Apa yang Harus Dilakukan Sekiranya Muat turun Git Tidak Aktif Apa yang Harus Dilakukan Sekiranya Muat turun Git Tidak Aktif Apr 17, 2025 pm 04:54 PM

Selesaikan: Apabila kelajuan muat turun git perlahan, anda boleh mengambil langkah -langkah berikut: periksa sambungan rangkaian dan cuba menukar kaedah sambungan. Mengoptimumkan Konfigurasi Git: Meningkatkan Saiz Penampan Pos (Git Config-Global Http.PostBuffer 524288000), dan mengurangkan had berkelajuan rendah (git config --global http.lowspeedlimit 1000). Gunakan proksi Git (seperti Git-Proxy atau Git-LFS-Proxy). Cuba gunakan klien Git yang berbeza (seperti sourcetree atau github desktop). Periksa perlindungan kebakaran

Bagaimana menyelesaikan masalah carian yang cekap dalam projek PHP? Jenis membantu anda mencapainya! Bagaimana menyelesaikan masalah carian yang cekap dalam projek PHP? Jenis membantu anda mencapainya! Apr 17, 2025 pm 08:15 PM

Apabila membangunkan laman web e-dagang, saya menghadapi masalah yang sukar: bagaimana untuk mencapai fungsi carian yang cekap dalam sejumlah besar data produk? Carian pangkalan data tradisional tidak cekap dan mempunyai pengalaman pengguna yang lemah. Selepas beberapa penyelidikan, saya dapati jenis enjin carian dan menyelesaikan masalah ini melalui PHP pelanggan PHP TypeSense/TypeSense-PHP, yang meningkatkan prestasi carian.

Cara kembali selepas penyerahan Git Cara kembali selepas penyerahan Git Apr 17, 2025 pm 01:06 PM

Untuk melepaskan komitmen git, anda boleh menggunakan perintah Reset Git -Hard ~ n, di mana n mewakili bilangan komitmen untuk jatuh balik. Langkah -langkah terperinci termasuk: Tentukan bilangan komitmen untuk dilancarkan kembali. Gunakan pilihan -sukar untuk memaksa sandaran. Jalankan perintah itu kembali kepada komit yang ditentukan.

Cara menyambung ke rangkaian awam pelayan git Cara menyambung ke rangkaian awam pelayan git Apr 17, 2025 pm 02:27 PM

Menyambungkan pelayan Git ke rangkaian awam termasuk lima langkah: 1. Sediakan alamat IP awam; 2. Buka port firewall (22, 9418, 80/443); 3. Konfigurasi akses SSH (menghasilkan pasangan utama, buat pengguna); 4. Konfigurasi akses HTTP/HTTPS (pasang pelayan, konfigurasikan keizinan); 5. Uji sambungan (menggunakan klien SSH atau arahan git).

See all articles