Git tidak lebih baik dari Subversi. Tetapi juga tidak lebih buruk. Ini berbeda.
Perbedaan utamanya adalah desentralisasi. Bayangkan Anda adalah seorang pengembang di jalan, Anda mengembangkan di laptop Anda dan Anda ingin memiliki kontrol sumber sehingga Anda dapat kembali 3 jam.
Dengan Subversion, Anda memiliki Masalah: Gudang SVN mungkin berada di lokasi yang tidak dapat Anda jangkau (di perusahaan Anda, dan saat ini Anda tidak memiliki internet), Anda tidak dapat melakukan. Jika Anda ingin membuat salinan kode Anda, Anda harus benar-benar menyalin / menempelnya.
Dengan Git, Anda tidak memiliki masalah ini. Salinan lokal Anda adalah repositori, dan Anda dapat berkomitmen padanya dan mendapatkan semua manfaat dari kontrol sumber. Saat Anda mendapatkan kembali konektivitas ke repositori utama, Anda dapat melakukan komitmen terhadapnya.
Ini terlihat bagus pada awalnya, tetapi ingatlah kompleksitas yang ditambahkan pada pendekatan ini.
Git tampaknya menjadi "baru, berkilau, keren". Ini sama sekali tidak buruk (memang ada alasan mengapa Linus menulisnya untuk pengembangan Kernel Linux), tetapi saya merasa bahwa banyak orang yang naik kereta "Distributed Source Control" hanya karena itu baru dan ditulis oleh Linus Torvalds, tanpa benar-benar mengetahui mengapa / jika itu lebih baik.
Subversi memiliki Masalah, tetapi begitu juga Git, Mercurial, CVS, TFS atau apa pun.
Sunting: Jadi jawaban ini sekarang berumur satu tahun dan masih menghasilkan banyak upvotes, jadi saya pikir saya akan menambahkan beberapa penjelasan lagi. Pada tahun terakhir sejak menulis ini, Git telah memperoleh banyak momentum dan dukungan, terutama karena situs seperti GitHub benar-benar lepas landas. Saya menggunakan Git dan Subversion saat ini dan saya ingin berbagi wawasan pribadi.
Pertama-tama, Git bisa sangat membingungkan pada awalnya ketika bekerja secara desentralisasi. Apa itu remote? dan Bagaimana cara mengatur repositori awal dengan benar? dua pertanyaan yang muncul di awal, terutama dibandingkan dengan "svnadmin create" sederhana SVN, "git init" Git dapat mengambil parameter --bare dan - shared yang tampaknya menjadi cara "tepat" untuk mengatur terpusat gudang. Ada alasan untuk ini, tetapi menambah kompleksitas. Dokumentasi perintah "checkout" sangat membingungkan bagi orang-orang yang berubah - cara yang "tepat" tampaknya adalah "git clone", sementara "git checkout" tampaknya beralih cabang.
Git BENAR-BENAR bersinar ketika Anda didesentralisasi. Saya memiliki server di rumah dan Laptop di jalan, dan SVN tidak berfungsi dengan baik di sini. Dengan SVN, saya tidak dapat memiliki kontrol sumber lokal jika saya tidak terhubung ke repositori (Ya, saya tahu tentang SVK atau tentang cara menyalin repo). Dengan Git, itu adalah mode default. Ini adalah perintah tambahan (git commit melakukan secara lokal, sedangkan git push origin master mendorong cabang master ke remote bernama "origin").
Seperti yang dikatakan di atas: Git menambah kompleksitas. Dua mode pembuatan repositori, checkout vs. clone, commit vs push ... Anda harus tahu perintah mana yang bekerja secara lokal dan yang bekerja dengan "server" (Saya berasumsi kebanyakan orang masih suka "master-repositori" sentral) ).
Juga, perkakasnya masih kurang, setidaknya di Windows. Ya, ada Visual Studio AddIn, tapi saya masih menggunakan git bash dengan msysgit.
SVN memiliki keuntungan bahwa ini JAUH lebih mudah untuk dipelajari: Ada repositori Anda, semua perubahan untuk menuju itu, jika Anda tahu cara membuat, melakukan, dan checkout dan Anda siap untuk pergi dan dapat mengambil barang-barang seperti percabangan, memperbarui dll. Nanti di.
Git memiliki keuntungan bahwa JAUH lebih cocok jika beberapa pengembang tidak selalu terhubung ke repositori master. Juga, ini jauh lebih cepat daripada SVN. Dan dari apa yang saya dengar, dukungan percabangan dan penggabungan jauh lebih baik (yang diharapkan, karena ini adalah alasan utama yang ditulis).
Ini juga menjelaskan mengapa ia mendapat banyak buzz di Internet, karena Git sangat cocok untuk proyek-proyek Open Source: Hanya Fork itu, komit perubahan Anda ke Fork Anda sendiri, dan kemudian minta pengelola proyek asli untuk menarik perubahan Anda. Dengan Git, ini hanya berfungsi. Sungguh, coba di Github, ini ajaib.
Apa yang saya juga lihat adalah Git-SVN Bridges: Repositori pusat adalah repo Subversion, tetapi pengembang lokal bekerja dengan Git dan jembatan kemudian mendorong perubahan mereka ke SVN.
Tetapi bahkan dengan tambahan panjang ini, saya masih mendukung pesan inti saya: Git tidak lebih baik atau lebih buruk, hanya saja berbeda. Jika Anda memiliki kebutuhan untuk "Kontrol Sumber Offline" dan kesediaan untuk meluangkan waktu tambahan mempelajarinya, itu fantastis. Tetapi jika Anda memiliki Kontrol Sumber yang terpusat secara ketat dan / atau berjuang untuk memperkenalkan Kontrol Sumber di tempat pertama karena rekan kerja Anda tidak tertarik, maka kesederhanaan dan perkakas yang sangat baik (setidaknya pada Windows) dari SVN bersinar.