github - 在学习GIT,一个小问题
phpcn_u1582
phpcn_u1582 2017-05-02 09:24:26
0
3
706

为什么别人总说 linus 反感SVN,是因为他必须连网才能使用,所以不用他,说得好像GIT不联网就能使用一样,不联网他咋提远程服务器啊?

phpcn_u1582
phpcn_u1582

membalas semua(3)
phpcn_u1582

Memang benar bahawa anda akhirnya perlu disambungkan ke Internet untuk bergabung dengan kod orang lain.

Tetapi maksud ayat itu ialah Git anda tidak perlu 总是 disambungkan ke Internet untuk pengurusan versi, kerana ia mempunyai gudang tempatan. Anda boleh melakukan banyak kerja berkaitan pengurusan versi secara setempat tanpa memerlukan sambungan Internet, seperti membuat cawangan, menyerahkan, memutar balik kod, dsb.

Bagi pasukan berskala kecil biasa yang sentiasa duduk di pejabat dan bekerja menggunakan LAN, mereka mungkin tidak dapat menghargai sepenuhnya manfaat Git Dalam erti kata lain, untuk situasi umum, SVN sudah memadai.

Walau bagaimanapun, untuk pasukan "tidak konvensional" di mana ahli projek boleh diedarkan di mana-mana, Git mungkin lebih baik.


Saya pada asalnya ingin membalas terus kepada anda dalam ulasan, tetapi terdapat banyak kandungan, jadi saya akan menambahkannya di sini.

Ia boleh dilihat daripada keraguan anda bahawa anda mungkin tidak begitu memahami intipati 版本管理. Versi dalam pengurusan versi bukan sahaja merujuk kepada versi keluaran akhir perisian 0.8, 1.0 dan 2.0 hanyalah versi untuk pengguna akhir. 版本管理 dalam 版本 secara amnya merujuk kepada keadaan perantaraan program semasa proses pembangunan. Sesetengah versi ini perlu digabungkan ke dalam versi awam, dan sesetengahnya mungkin akan dibuang, atau bahkan berkembang menjadi projek lain sejak itu. Boleh dikatakan setiap kali anda menekan Ctrl+S, anda mencipta versi.

Untuk menjelaskan intipati pengurusan versi dengan lebih baik, izinkan saya memberikan beberapa lagi contoh Inilah yang sering kita hadapi dalam kehidupan seharian.

Senario 1

Saya mempunyai idea tentang fungsi ini yang sedang dibangunkan, tetapi saya tidak tahu sama ada ia boleh dilaksanakan, jadi saya bercadang untuk mencubanya dahulu, tetapi saya tidak mahu mengubahnya terus di ruang kerja ( ruang kerja dalam SVN selalunya sepadan secara langsung dengan versi utama), kerana Ini akan mencemarkan kod sedia ada Jika anda kemudiannya mendapati kaedah ini tidak boleh dilaksanakan, anda perlu memadam semua kod yang berkaitan, tetapi anda mungkin tidak ingat apa yang perlu dipadamkan. pada masa itu.

Ia juga boleh dilaksanakan dalam alat kawalan versi terpusat seperti SVN (begitu banyak fungsi dan ciri lebih mudah), iaitu, menggunakan cawangan, tetapi dengan cara ini saya masih perlu berurusan dengan pelayan dengan kerap, membuat cawangan , Padam cawangan, gabungkan cawangan, komit kod ke cawangan, dsb. Tetapi sebenarnya, saya boleh melakukan semua perkara ini secara tempatan (sekali lagi, ini mungkin bukan masalah besar dalam rangkaian kawasan tempatan saya membuat cawangan di gudang tempatan, kod dan mengujinya, jika ia berfungsi, gabungkannya ke dalam versi utama. Jika ia tidak berfungsi, saya boleh menggabungkannya ke dalam versi utama.

Senario 2

Saya mendapati bahawa program dalam penyerahan tertentu tidak betul (sebagai contoh, fungsi tertentu hanya diubah separuh dan tidak boleh digunakan, malah kompilasi gagal Pada masa ini, saya hanya boleh melancarkan pelayan dengan cepat). , tetapi Mungkin sudah terlambat, orang lain mungkin telah menyemak kod anda dan anda perlu menghantar e-mel kumpulan yang menerangkan masalah (atau hanya menjerit jika semua orang bersama).

Tetapi dalam Git, memandangkan ia diserahkan secara tempatan terlebih dahulu, ia memberikan gelagat penyerahan masa penimbal, membolehkan saya membuat asalnya tepat pada masanya tanpa menjejaskan orang lain (jika anda mendapati ia terlambat, tiada apa yang boleh anda lakukan).

Senario 3

Terdapat juga keupayaan rollback "tempatan" Sesuatu fungsi agak kompleks dan mengambil masa beberapa hari untuk dibangunkan, tetapi saya tidak mahu menyerahkannya kepada pelayan sebelum ia dibangunkan, kerana saya tidak mahu menjejaskan. orang lain kerana ralat kompilasi atau berjalan. Jadi saya ingin menukar semuanya secara tempatan dan kemudian menyerahkannya, tetapi dengan cara ini, program ini tidak dijamin Jika saya mahu kembali, bandingkan dengan kod sebelumnya, dan lain-lain, adalah sukar untuk melakukannya.

Sesetengah alat juga menyediakan fungsi sejarah tempatan, tetapi ia tidak mudah digunakan Sejarah tempatan tidak boleh dibandingkan dengan versi Setiap kali anda Ctrl+S mungkin atau mungkin tidak membentuk sejarah tempatan. Dalam erti kata lain, sejarah tempatan tidak mengekalkan rekod seperti yang anda mahukannya. Kemungkinan besar rekod sejarah yang anda perlukan segera tidak disimpan, dan anda hanya boleh mengeluh sambil melihatnya (masalah ini memang tidak begitu jarang berlaku)

Ringkasan

Setelah berkata begitu banyak, ini hanyalah beberapa contoh sampingan antara berpusat dan diedarkan. Sebenarnya, isu ini sama seperti berorientasikan objek dan berorientasikan proses Tidak ada kebaikan atau keburukan mutlak. Mungkin lebih baik menggunakan berorientasikan objek untuk program yang kompleks, tetapi berorientasikan proses bukan tanpa merit. Pilihan alatan bergantung pada keputusan pasukan dan individu

左手右手慢动作

Penyoal terlalu tertumpu pada kelebihan git yang boleh digunakan di luar talian oleh seseorang Git ialah struktur yang diedarkan, yang bermaksud bahawa integriti datanya ditakdirkan untuk menjadi lebih baik daripada svn gudang svn. rasuah fail berlaku (sangat mudah berlaku! Contohnya, gangguan bekalan elektrik), dan semua penyerahan sejarah yang dieksport dengan svndump juga mempunyai masalah yang tidak dapat dijelaskan.

Selain itu, skala projek yang mungkin terdedah kepada subjek masih agak kecil, dan pada dasarnya mereka masih menggunakan git seperti svn, jadi mereka menumpukan pada konflik dan menggabungkan isu. Apa yang saya ingin katakan ialah sudah tentu konflik mesti diselesaikan, tetapi tujuan asas pengurusan versi bukan sahaja untuk menggabungkan kod dan menyelesaikan konflik Perkara yang paling penting mungkin untuk membolehkan semua orang bekerja tanpa menjejaskan orang lain dan mengeluarkan

Penggunaan git oleh syarikat kami mengikut pendekatan aliran git digunakan untuk keluaran trunk (projek web, jadi ia adalah versi stabil yang sentiasa diulang), dan membangunkan digunakan untuk ujian dicipta daripada cawangan pembangunan, selepas selesai kerja, gabungkannya semula untuk membangunkan, buat keluaran dan uji dalam persekitaran ujian Jika semuanya OK, kemudian gabungkan keluaran itu ke dalam induk dan tunggu yang seterusnya keluarkan
Tujuan mengatakan ini adalah untuk menambah baik, dalam Apabila bekerja pada cawangan ciri anda sendiri, anda sebenarnya tidak perlu terlalu mengambil berat tentang apa yang berlaku pada cawangan pembangunan (tidak perlu berinteraksi dengan pelayan pusat ), tetapi keperluan untuk pengurusan versi masih wujud untuk melengkapkan ciri Ia memerlukan anda membuat komitmen berkali-kali untuk menyelesaikannya
Jika ia adalah tampalan yang perlu dibaiki dengan segera, buat cawangan perbaikan terbaru daripada master dan gabungkannya. kembali kepada menguasai (dan membangun) selepas perubahan selesai

Melalui cara ini, ia terutamanya diselesaikan

  1. Pembangunan ciri baharu tidak akan menjejaskan pembangunan ciri baharu yang lain (setiap ciri ialah cawangan bebas)

  2. Naik taraf kepada versi baharu (sedang dibangunkan) dan pembetulan pepijat kepada versi lama (induk) tidak akan bercanggah atau menjejaskan satu sama lain, dan tidak akan menyebabkan pepijat dalam versi induk lama hanya kerana seseorang sedang membangunkan versi baharu. Anda perlu menunggu sehingga versi baharu dibangunkan sebelum anda boleh melancarkannya sekaligus

Saya boleh katakan bahawa walaupun SVN mampu melakukan ini, fungsi cawangannya pada dasarnya adalah direktori lain dalam gudang Penggabungan atau tidak sebenarnya disimpan melalui atribut, yang pastinya tidak mudah digunakan


Tambahan:

Anda boleh menyemak http://git-scm.com/book/zh/v1/%E5%88%86%E5%B8%83%E5%BC%8F-Git-%E4%B8%BA % E9%A1%B9%E7%9B%AE%E4%BD%9C%E8%B4%A1%E7%8C%AE memperkenalkan banyak amalan terbaik git

迷茫

Itulah perbezaan antara terpusat dan teragih.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan