Rumah > alat pembangunan > git > Apakah perbezaan antara git dan svn?

Apakah perbezaan antara git dan svn?

青灯夜游
Lepaskan: 2021-11-26 15:27:28
asal
32504 orang telah melayarinya

Perbezaan: 1. SVN ialah sistem kawalan versi berpusat, manakala Git ialah sistem kawalan versi teragih; 2. SVN disimpan mengikut fail asal, yang bersaiz lebih besar, manakala Git disimpan mengikut metadata. , saiznya sangat kecil; 3. Operasi cawangan Git tidak akan menjejaskan pembangun lain, tetapi SVN akan.

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Git 2.30.0, komputer Dell G3.

Pengenalan kepada svn dan git

SVN (sistem kawalan versi berpusat)

SVN ialah singkatan kepada Subversion, sistem kawalan versi sumber terbuka, menyokong kebanyakan sistem pengendalian biasa. Sebagai sistem kawalan versi sumber terbuka, Subversion mengurus data yang berubah dari semasa ke semasa. Data ini diletakkan dalam repositori pusat. Arkib ini sama seperti pelayan fail biasa, tetapi ia mengingati setiap perubahan fail. Dengan cara ini anda boleh memulihkan fail kepada versi yang lebih lama atau menyemak imbas sejarah perubahan fail. Subversion ialah sistem tujuan umum yang boleh digunakan untuk mengurus sebarang jenis fail, termasuk kod sumber program.

Aliran Kerja

Aliran kerja pengurusan berpusat adalah seperti berikut:

Inti pengurusan kod terpusat Ia adalah pelayan, dan semua pembangun mesti mendapatkan kod daripada pelayan sebelum memulakan kerja hari baharu, kemudian membangun, dan akhirnya menyelesaikan konflik dan komitmen. Semua maklumat versi diletakkan pada pelayan. Jika anda terputus sambungan dari pelayan, pada dasarnya boleh dikatakan bahawa pembangun tidak dapat berfungsi. Berikut ialah contoh:

Mulakan kerja hari baharu:

  • Muat turun kod terkini pasukan projek daripada pelayan.

  • Masukkan cawangan anda sendiri, kerjakannya, dan serahkan kod ke cawangan anda sendiri pada pelayan setiap jam (ramai orang mempunyai tabiat ini. Kerana kadang-kadang mereka menukar kod itu sendiri) , dan akhirnya mahu memulihkan kepada versi jam sebelumnya, atau melihat kod yang anda ubah suai pada jam sebelumnya, anda perlu melakukan ini).

  • Masa tidak bertugas akan tiba tidak lama lagi. Gabungkan cawangan anda ke cawangan utama pelayan hari itu.

SVN ialah sistem kawalan versi terpusat

Pendekatan ini membawa banyak faedah, terutamanya berbanding VCS tempatan yang lama. Kini, semua orang boleh melihat sedikit sebanyak perkara yang sedang diusahakan oleh orang lain dalam projek itu. Pentadbir juga boleh mengawal kebenaran setiap pembangun dengan mudah.
Semuanya ada dua sisi, baik dan buruk. Kelemahan yang paling jelas untuk melakukan ini ialah pelayan pusat adalah satu titik kegagalan. Jika ia tidak berfungsi selama satu jam, tiada siapa yang akan dapat menyerahkan kemas kini, pemulihan, perbandingan, dsb. pada jam ini, dan adalah mustahil untuk bekerjasama. Jika cakera pelayan pusat gagal dan tiada sandaran dibuat atau sandaran tidak cukup tepat pada masanya, terdapat risiko kehilangan data. Senario kes terburuk ialah kehilangan sepenuhnya semua rekod perubahan sejarah bagi keseluruhan projek, kecuali beberapa data syot kilat yang diekstrak oleh pelanggan, tetapi ini masih menjadi masalah kerana anda tidak dapat menjamin bahawa semua data telah diekstrak.
Pada dasarnya, Subversion hanya mengambil berat tentang perbezaan khusus dalam kandungan fail. Setiap kali ia direkodkan fail yang telah dikemas kini, serta baris dan kandungan yang telah dikemas kini.

Ciri Subversion

  • Setiap repositori mempunyai URL unik (alamat rasmi), dan setiap pengguna memperoleh kod dan data daripada alamat ini; 🎜>

    Untuk mendapatkan kemas kini kod, anda hanya boleh menyambung ke repositori unik ini dan menyegerakkan untuk mendapatkan data terkini; );
  • Penyerahan memerlukan kebenaran jika tiada kebenaran menulis, penyerahan akan gagal; Jika orang lain menyerahkan sebelum anda, ia akan menggesa "Perubahan adalah berdasarkan versi lapuk, kemas kini dahulu dan kemudian serahkan"... dan seterusnya; kelajuan penyerahan: mereka yang cepat, Hantar dahulu, dan tiada apa yang akan berlaku jika anda lambat, hantar kemudian, anda mungkin menghadapi penyelesaian konflik yang menyusahkan.
  • GIT (Sistem Kawalan Versi Teragih)
  • Git ialah sistem kawalan versi teragih sumber terbuka percuma untuk pemprosesan yang tangkas dan cekap bagi mana-mana Projek kecil atau Besar

    Git ialah sistem kawalan versi teragih sumber terbuka yang digunakan untuk mengendalikan pengurusan versi projek dengan berkesan dan cepat daripada projek yang sangat kecil kepada yang sangat besar. Git ialah perisian kawalan versi sumber terbuka yang dibangunkan oleh Linus Torvalds untuk membantu mengurus pembangunan kernel Linux.
  • Perbezaan terbesar antara diedarkan dan berpusat ialah pembangun boleh menyerahkan secara setempat, dan setiap pembangun menyalin repositori Git lengkap pada mesin tempatan melalui klon git.

  • Aliran Kerja
  • Gambar di bawah ialah proses pembangunan git klasik.

Ciri fungsi Git

Dari perspektif

pembangun am

, git mempunyai fungsi berikut:

  1. Klon repositori Git yang lengkap (termasuk maklumat kod dan versi) daripada pelayan ke satu mesin.
  2. Buat cawangan dan ubah suai kod pada mesin anda sendiri mengikut tujuan pembangunan yang berbeza.
  3. Serahkan kod pada cawangan yang anda buat pada satu mesin.
  4. Gabungkan cawangan pada satu mesin.
  5. Ambil versi terbaharu kod pada pelayan, dan kemudian gabungkannya dengan cawangan utama anda.
  6. Jana tampalan dan hantar tampalan kepada pembangun utama.
  7. Melihat maklum balas daripada pemaju utama, jika pemaju utama mendapati terdapat konflik antara dua pemaju umum (konflik yang boleh diselesaikan secara kerjasama antara mereka), mereka akan diminta menyelesaikan konflik itu terlebih dahulu , dan kemudian biarkan mereka menyelesaikan konflik yang diserahkan oleh satu orang. Jika pembangun utama boleh menyelesaikannya sendiri, atau tiada konflik, lulus.
  8. Kaedah umum untuk menyelesaikan konflik antara pembangun ialah pembangun boleh menggunakan arahan tarik untuk menyelesaikan konflik, dan kemudian menyerahkan patch kepada pembangun utama selepas konflik diselesaikan.

Dari perspektif pembangun utama (dengan mengandaikan bahawa pembangun utama tidak perlu membangunkan kod), git mempunyai fungsi berikut:

  1. Lihat Semak status penyerahan pembangun umum melalui e-mel atau kaedah lain.

  2. Gunakan tampalan dan selesaikan konflik (anda boleh menyelesaikannya sendiri atau anda boleh meminta pembangun menyelesaikannya sebelum menyerahkan semula. Jika ia projek sumber terbuka, anda juga perlu memutuskan tampungan yang mana berguna dan mana yang tidak).

  3. Serahkan keputusan kepada pelayan awam dan kemudian maklumkan kepada semua pembangun.

Git ialah sistem kawalan versi teragih

Sejak dilahirkan pada tahun 2005, Git telah menjadi semakin matang dan sempurna Walaupun sangat mudah digunakan, ia masih mengekalkannya reka bentuk asal menetapkan matlamat. Ia pantas dan amat sesuai untuk menguruskan projek besar Ia juga mempunyai sistem pengurusan cawangan bukan linear yang luar biasa yang boleh menampung pelbagai keperluan pembangunan projek yang kompleks.

Tidak seperti SVN, Git merekodkan sejarah versi dan hanya mengambil berat sama ada keseluruhan data fail telah berubah. Git tidak menyimpan data pembezaan tentang perubahan dalam kandungan fail. Malah, Git lebih seperti mengambil gambar fail yang diubah dan merekodkannya dalam sistem fail kecil. Setiap kali kemas kini diserahkan, ia mengimbas maklumat cap jari semua fail, mengambil syot kilat fail dan kemudian menyimpan indeks yang menghala ke syot kilat. Untuk meningkatkan prestasi, jika fail itu tidak berubah, Git tidak akan menyimpannya semula, tetapi hanya akan membuat sambungan ke petikan yang disimpan terakhir.

Ciri Git

  1. Repositori setiap klon dalam Git adalah sama. Anda boleh mencipta repositori anda sendiri daripada klon mana-mana repositori, dan repositori anda juga boleh digunakan sebagai sumber untuk orang lain jika anda mahu.
  2. Setiap operasi pengekstrakan Git sebenarnya adalah sandaran lengkap repositori kod. Penyerahan sepenuhnya dilakukan secara tempatan, tiada siapa yang perlu memberi anda kebenaran, anda adalah tuan kepada repositori anda, dan penyerahan akan sentiasa berjaya.
  3. Malah perubahan berdasarkan versi lama boleh dihantar dengan jayanya, dan penyerahan akan mencipta cawangan baharu berdasarkan versi lama.
  4. Penyerahan Git tidak akan terganggu sehingga anda berpuas hati sepenuhnya dengan kerja anda PUSH kepada orang lain atau orang lain untuk MENARIK repositori anda akan berlaku semasa proses PULL dan PUSH Konflik yang tidak dapat diselesaikan secara automatik digesa untuk melengkapkan ini secara manual.
  5. Penyelesaian konflik bukan lagi pertandingan penyerahan seperti SVN, tetapi gabungan dan penyelesaian konflik dilakukan apabila diperlukan.

Perbezaan antara svn dan git

  • SVN ialah sistem kawalan versi terpusat Terdapat metafora yang tidak tepat: SVN = pelayan sandaran kawalan versi SVN Rasanya sedikit seperti gudang arkib apabila digunakan Ia menyokong pembacaan dan penulisan fail selari, dan menyokong pengurusan versi kodnya termasuk mendapatkan semula, mengimport, mengemas kini, cawangan, menamakan semula, memulihkan, menggabungkan, dll.

    Git ialah sistem kawalan versi yang diedarkan.

  • GIT, seperti SVN, mempunyai repositori atau pelayan terpusat sendiri. Walau bagaimanapun, GIT lebih suka digunakan dalam mod teragih, iaitu setiap pembangun akan mengklonkan repositorinya sendiri pada mesinnya selepas menyemak kod dari repositori/pelayan pusat.

    Boleh dikatakan jika anda terperangkap di tempat yang anda tidak boleh menyambung ke Internet, seperti di dalam kapal terbang, di ruang bawah tanah, di dalam lif, dan lain-lain, anda masih boleh menghantar fail, melihat rekod versi sejarah, dan buat cawangan projek tunggu. Bagi sesetengah orang, ini mungkin tidak begitu berguna, tetapi apabila anda tiba-tiba menghadapi persekitaran tanpa rangkaian, ini akan menyelesaikan masalah besar anda.

  • Git menyimpan fail dalam bentuk metadata, yang sangat kecil; SVN menyimpan fail dalam bentuk fail asal, yang bersaiz lebih besar.

    GIT menyimpan kandungan sebagai metadata, manakala SVN menyimpan kandungan sebagai fail Semua sistem kawalan sumber menyembunyikan metamaklumat fail dalam folder seperti .svn, .cvs, dsb.

    Jika anda membandingkan saiz direktori .git dengan .svn, anda akan mendapati bahawa ia sangat berbeza. Oleh kerana direktori .git ialah versi klon repositori pada mesin anda, ia mempunyai segala-galanya pada repositori pusat, seperti teg, cawangan, rekod versi, dsb.

  • Cawangan bukanlah sesuatu yang istimewa dalam SVN, ia hanyalah satu lagi direktori dalam repositori. Jika anda ingin mengetahui sama ada cawangan telah digabungkan, anda perlu menjalankan perintah secara manual seperti svn propget svn:mergeinfo untuk mengesahkan sama ada kod itu telah digabungkan.

    Namun, bekerja dengan cawangan GIT agak mudah dan menyeronokkan. Anda boleh bertukar dengan cepat antara beberapa cawangan daripada direktori kerja yang sama. Anda boleh mencari cawangan yang tidak digabungkan dengan mudah dan anda boleh menggabungkan fail ini dengan cepat dan mudah.

  • GIT tidak mempunyai nombor versi global, manakala SVN mempunyai ciri terbesar yang tiada GIT berbanding SVN. Anda juga tahu bahawa nombor versi SVN sebenarnya adalah petikan kod sumber pada bila-bila masa yang sepadan. Saya fikir ia adalah kejayaan terbesar dalam evolusi daripada CVS kepada SVN. Kerana GIT dan SVN berbeza secara konsep, saya tidak tahu ciri-ciri dalam GIT yang sesuai dengannya. Jika anda mempunyai sebarang petunjuk, sila kongsikannya dalam komen.

  • Integriti kandungan GIT lebih baik daripada SVN: storan kandungan GIT menggunakan algoritma cincang SHA-1. Ini memastikan integriti kandungan kod dan mengurangkan gangguan kepada repositori sekiranya berlaku kegagalan cakera dan masalah rangkaian.

  • Impak operasi cawangan

    Operasi cawangan Git tidak akan menjejaskan pembangun lain, tetapi SVN akan mempunyai maklumat yang sama seperti anda Cawangan yang sama.

Kebaikan dan keburukan svn dan git

Kebaikan dan keburukan SVN

SVN mempunyai sokongan yang baik untuk bahasa Cina, operasi mudah , dan tiada kesukaran untuk digunakan Artis, kakitangan produk, penguji dan kakitangan pelaksanaan semuanya boleh bermula dengan mudah. Antara muka pengguna disatukan, fungsinya lengkap, dan operasinya mudah.

Kebaikan dan Kelemahan Git

Laksanakan pengurusan versi berbeza bagi kod sumber program dan pangkalan kod menggunakan ruang yang sangat sedikit. Pengurusan kod cawangan yang mudah. Ia tidak menyokong bahasa Cina, mempunyai sokongan antara muka grafik yang lemah, dan sukar untuk digunakan. Bukan senang nak promosi.

Perbezaan dalam skop svn dan git yang berkenaan

  • Objek berkenaan yang berbeza. Git sesuai untuk pembangun yang terlibat dalam projek sumber terbuka. Kerana tahap kepakaran mereka yang tinggi, mereka lebih mementingkan kecekapan daripada kemudahan penggunaan. SVN berbeza, ia sesuai untuk pasukan pembangunan syarikat biasa. Ia lebih mudah digunakan.

  • Masa penggunaan adalah berbeza. Git sesuai untuk pembangunan projek tunggal dengan pelbagai peranan pembangunan melalui Internet, dan SVN sesuai untuk pembangunan berbilang projek selari dalam perusahaan yang diselaraskan oleh pengurus projek.

  • Strategi pengurusan kebenaran adalah berbeza. Git tidak mempunyai kawalan pengurusan kebenaran yang ketat Selagi anda mempunyai akaun, anda boleh mengeksport, mengimport kod dan juga melakukan operasi rollback. SVN mempunyai pengurusan kebenaran yang ketat, dan boleh mengawal kebenaran pada subdirektori tertentu mengikut kumpulan atau individu. Bezakan antara kebenaran membaca dan menulis. Lebih tegas lagi, operasi rollback tidak disokong. Pastikan kod sentiasa boleh dikesan.

  • Skop penggunaan cawangan adalah berbeza. Dalam Git, anda hanya boleh cawangan seluruh gudang, dan setelah dipadamkan, ia tidak boleh dipulihkan. Dalam SVN, cawangan boleh menyasarkan mana-mana subdirektori, yang pada asasnya adalah operasi penyalinan. Oleh itu, anda boleh membuat banyak cawangan hierarki, memadamnya apabila ia tidak diperlukan, dan hanya menyemak versi SVN lama apabila diperlukan pada masa hadapan.

  • Berdasarkan perkara ketiga, Git sesuai untuk projek perisian tulen, biasanya beberapa projek sumber terbuka, seperti kernel Linux, busybox, dsb. Sebaliknya, SVN mahir dalam pengurusan pelbagai projek. Contohnya, anda boleh menyimpan bsp/dokumen reka bentuk/sistem fail/aplikasi/skrip kompilasi automatik projek telefon mudah alih dalam gudang SVN, atau menyimpan sistem fail lima projek telefon mudah alih dalam SVN. n (bilangan projek)*m (bilangan komponen) repositori mesti diwujudkan dalam git. Dalam SVN, hanya sehingga n atau m diperlukan.

  • Git menggunakan ID 128-bit sebagai nombor versi , dan anda mesti menunjukkan cawangan mana ia semasa mendaftar keluar, manakala SVN menggunakan nombor siri yang bertambah sebagai versi unik global No., lebih ringkas dan mudah difahami. Walaupun anda boleh menggunakan gittag untuk mencipta beberapa alias literal, lagipun, itu hanya untuk versi khas.

  • Kebolehkesanan, proses pembangunan tipikal git ialah: menubuhkan cawangan, membangun, menyerahkan kepada tuan tempatan, dan memadamkan cawangan. Akibat daripada ini ialah butiran pengubahsuaian sebelumnya akan hilang. Dan lakukan perkara yang sama di bawah SVN tanpa kehilangan sebarang butiran. Berikut ialah pautan menarik yang menunjukkan kaedah kerja biasa di bawah git: (dengan induk sebagai teras, sentiasa mencipta cawangan baharu dan memadamkan cawangan lama)

  • Kemas kini separa, pemulihan separa. Memandangkan SVN mencipta folder .svn dalam setiap folder untuk pengurusan, ia boleh melaksanakan kemas kini separa atau pemulihan dengan mudah. Jika anda hanya ingin mengemas kini bahagian tertentu, svn boleh melakukannya dengan baik. Pada masa yang sama, jika kod ditulis dengan tidak betul, pemulihan separa boleh dicapai dengan mudah Sudah tentu, git juga boleh dipulihkan melalui versi sejarah, tetapi pemulihan separa tidak boleh dicapai dengan mudah.

Yang manakah lebih sesuai untuk pengurusan projek, SVN atau Git?

Pertama sekali, saya adalah pengurus projek pasukan R&D. Saya telah menggunakan SVN dan Git lebih sesuai untuk pengurusan projek dan Git hanya sesuai untuk pengurusan kod.

Ahli pasukan R&D biasanya termasuk: analisis keperluan, reka bentuk, artis, pengaturcara, ujian, pelaksanaan, operasi dan penyelenggaraan Setiap ahli mempunyai output dalam kerja mereka, termasuk dokumen, kod reka bentuk dan kod program diuruskan secara berpusat oleh projek. SVN boleh mengelas dan mengurus dengan jelas mengikut direktori, memastikan pengurusan pasukan projek dalam keadaan teratur dan cekap.

Pembelajaran yang disyorkan: "Tutorial Git"

Atas ialah kandungan terperinci Apakah perbezaan antara git dan svn?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan