Saya hanya akan membaca apa yang saya baca di SO, jadi maafkan saya, tetapi yang saya baca mengatakan bahwa satu keuntungan utama dari Git daripada Subversion adalah bahwa Git memberikan semua kode sumber ke pengembang secara lokal, tidak harus melakukan apa pun pada server.
Dengan terbatasnya penggunaan SVN dan TortoiseSVN, saya memiliki semua kode sumber, atau setidaknya saya pikir saya punya. Misalnya, saya punya situs web. Saya mengunggahnya ke SVN. Saya masih menjalankan situs web saya secara lokal, bukan? Jika seseorang mengirimkan perubahan dan saya tidak terhubung, tidak masalah apakah saya memiliki Git atau tidak, sampai saya terhubung kembali ke server.
Saya tidak mengerti. Saya tidak meminta pengulangan satu vs yang lain kecuali satu titik ini.
Jawaban:
Premis yang Anda tanyakan benar-benar salah:
Dengan Subversion dan Git Anda memiliki kode sumber secara lokal. Dengan Git Anda memiliki kode sumber dan repositori di mesin lokal Anda.
Bunyinya seperti ini.
Subversi:
Kode Anda <-> Repositori
Git:
Kode Anda <-> Repositori lokal Anda <-> Repositori jarak jauh (... <-> repo jarak jauh lain, dan sebagainya)
Satu manfaat yang Anda dapatkan dari struktur ini adalah Anda masih dapat menggunakan kontrol sumber dan melakukan perubahan lokal Anda ke repositori lokal Anda tanpa mengganggu pekerjaan anggota tim lain (dengan siapa Anda berbagi repositori jarak jauh).
Dengan Subversion Anda harus mengambil risiko melanggar pembangunan untuk orang lain atau menderita pembangunan lokal yang berkepanjangan tanpa kontrol sumber yang berakhir dengan komitmen besar (atau lebih mungkin pengembalian).
Dengan Git, di sisi lain, Anda akan merasa bebas untuk melakukan perubahan ini ke repositori lokal Anda, melihat log dan perbedaan atau perubahan Anda, dan hanya ketika Anda merasa siap untuk dibagikan dengan tim, dorong perubahan dari lokal repositori ke yang jauh.
sumber
Git atau Mercurial menyimpan seluruh repositori Anda secara lokal dengan semua revisi dan cabang bernama. Subversi hanya menyimpan satu - biasanya Revisi Kepala. Jadi dengan Git dan Mercurial Anda dapat mengakses repositori penuh (yaitu kode sumber Anda saat ini dan riwayatnya) bahkan ketika jaringan Anda rusak dengan SVN, Anda dibatasi pada revisi terakhir yang Anda perbarui.
sumber
Jawaban singkatnya adalah ini: dengan git Anda memiliki semua kode sumber Anda, dengan subversi Anda memiliki semua versi terbaru dari kode sumber Anda.
Git menyimpan salinan seluruh riwayat repositori Anda secara lokal. Dengan subversi seluruh riwayat ada di server.
sumber
Saya pikir apa yang Anda maksudkan adalah bahwa dengan SVN, semua tindakan Anda memerlukan komunikasi dengan server, sedangkan GIT tidak. Dengan SVN, jika Anda ingin bercabang, Anda bercabang di server dan menarik cabang itu. Dengan GIT, Anda dapat membuat cabang lokal tanpa "server" mengetahuinya.
Anda benar dalam mengatakan bahwa Anda memiliki kode sumber dengan SVN dan GIT, tetapi dengan GIT, tidak harus ada server terpusat yang juga berisi kode sumber. Dengan GIT, Anda mungkin HANYA orang dengan kode sumber, namun masih dapat melakukan semua fungsi yang Anda lakukan dengan VCS khas.
Saya telah mendengar argumen menentang GIT, dan saya pikir ini dapat membantu dengan pertanyaan Anda, mengatakan bahwa karena Anda tidak diharuskan untuk berkomitmen pada repo pusat, Anda memiliki kode sumber sampai Anda berkomitmen dan mendorongnya ke server Anda, jika kamu memiliki satu. Dengan SVN, satu-satunya cara untuk memiliki kontrol versi adalah dengan melakukan ke server, tetapi dengan GIT, Anda berpotensi menyimpan segala sesuatu di mesin lokal Anda dan jika ada yang salah, Anda "bisa kehilangan segalanya" meskipun Anda bisa dengan mudah kehilangan semua perubahan Anda dengan SVN jika Anda tidak melakukan dan HDD Anda jatuh juga.
sumber
Jika Anda mendorong setiap hari, maka risikonya harus kecil. Tetapi jika Anda dipaksa untuk melakukan setiap hari ke server SVN, maka pada akhirnya, Anda dapat membuat semuanya dalam satu set perubahan besar, yang tidak memisahkan setiap perubahan menjadi langkah-langkah kecil. Dengan git, Anda dianjurkan untuk membuat beberapa commit kecil. Saat mendorong, jika penggabungan diperlukan, daripada mencoba untuk menggabungkan dan mendorong. Jika Anda tidak dapat menggabungkan saat ini, Anda bisa mendorong ke cabang baru atau repositori lain di server.
sumber