Jika anda adalah salah satu daripada berjuta-juta dalam komuniti pemaju, maka kemungkinan besar anda sudah mendengar tentang konsep kawalan versi. Ia adalah alat atau sistem yang kuat yang membantu anda menjaga kerja anda, membolehkan anda bergerak di sekitar fail, dokumen dan koleksi maklumat lain yang berkaitan dengan projek anda dengan cepat. Dan terdapat banyak alat untuk pekerjaan seperti itu di pasaran, baik proprietari maupun sumber terbuka. Git adalah salah satu sistem kawalan versi yang paling popular dan digunakan secara meluas di dunia hari ini dan sejumlah projek yang mengejutkan bergantung pada Git untuk kawalan versi. Git adalah sistem kawalan versi diedarkan percuma dan terbuka yang direka untuk mengesan perubahan dalam kod sumber semasa pembangunan perisian.
Projek Git diwakili oleh struktur data yang dipanggil repositori di mana semua maklumat yang berkaitan dengan projek disimpan termasuk sejarah lengkap projek sejak penubuhannya. Ia menjejaki semua perubahan yang dibuat ke fail dari masa ke masa, membina garis masa semasa anda meneruskan projek. Satu repositori pada gilirannya terdiri daripada satu set gambar individu kandungan projek - koleksi fail dan repositori - dipanggil commits. Apabila anda ingin berkongsi perkembangan projek anda dengan dunia, anda perlu menolaknya kepada remote yang anda mempunyai akses tulis. Cawangan tempatan anda tidak disegerakkan secara automatik ke repositori jauh - anda perlu meneruskan cawangan-cawangan yang ingin anda kongsikan dengan jelas.
Git menganggap datanya lebih seperti satu set gambar, seperti sistem fail mini atau versi projek yang dikenali sebagai komited. Setiap kali anda melakukan, atau menyimpan keadaan projek anda pada bila-bila masa, Git pada dasarnya mengambil gambaran mengenai apa yang kelihatan seperti fail pada masa ini dan menyimpan rujukan kepada snapshot tersebut. Objek komit memegang metadata untuk setiap perubahan yang dilakukan ke repositori, termasuk pengarang, pengirim, tarikh komit, dan mesej log. Setiap komit menunjuk kepada objek pokok yang menangkap keadaan repositori pada ketika itu komit telah dilakukan, semuanya dalam satu petikan lengkap. Semasa anda membuat perubahan pada kod sepanjang jalan, anda membuat segelintir komit - komit berasingan untuk setiap perubahan yang anda buat. Git menugaskan setiap komit ID unik yang menjejaki apa, kapan dan siapa perubahan yang anda buat.
Setiap pemaju mempunyai repositori peribadi mereka sendiri untuk mengesan perubahan mereka. Anda membuat perubahan anda secara tempatan dan apabila anda sudah bersedia untuk berkongsi dengan pemaju lain, anda menolaknya kembali ke repositori yang anda semua kongsi. Komit menyimpan perubahan yang anda buat hanya ke repositori tempatan tetapi tidak ke repositori jauh. Komitmen anda tidak disegerakkan secara automatik ke repositori jauh - anda perlu meneruskan secara jelas komitmen yang anda ingin kongsi. Apabila anda menggunakan arahan push, anda menggunakan perubahan anda ke repositori hulu. Setiap projek sumber terbuka mempunyai cara tersendiri untuk menerima perubahan. Sesetengah projek menggunakan sistem kawalan versi teragih sepenuhnya di mana hanya satu orang boleh menolak perubahan pada repositori utama, sementara terdapat model repositori yang dikongsi di mana semua pemaju boleh menolak ke repositori bersama.
- Mendorong datang selepas melakukan. Git membuat rekod dan menjejak perubahan pada repositori dengan setiap titik komit ke objek pokok yang menangkap keadaan repositori pada ketika itu komit telah dilakukan, semuanya dalam satu petikan lengkap. Tetapi melakukan menyimpan perubahan hanya ke repositori tempatan tetapi tidak ke repositori jauh. Git push mengemas kini perubahan komited anda dan membolehkan anda menghantarnya ke repositori jauh di mana semua pemaju dapat mengaksesnya. Apabila anda menggunakan arahan push, ia hanya mengemas kini perubahan anda ke repositori hulu.
- Git commits adalah makna tempatan yang direkodkan hanya pada mesin di mana komitmen tersebut berlaku. Perintah "git komit" digunakan untuk memberitahu Git untuk menyimpan perubahan anda ke repositori tempatan dan anda perlu memberitahu Git secara khusus yang mana perubahan yang ingin anda sertakan dalam komit sebelum menggunakan perintah "git commit". Anda boleh menggunakan perintah "tolak git" untuk menolak komit di repositori setempat kepada repositori jauh. Perintah "tolak" mengemas kini komitmen baru baru pada pelayan jauh. Push mengambil dua hujah: nama terpencil (asal) dan nama cabang (master).
Ringkasnya, komit adalah unit asas perubahan dalam Git. Tidak seperti model kawalan versi terpusat lain, Git menganggap datanya lebih seperti satu set gambar yang dipanggil melakukan. Mereka seperti gambar keseluruhan kandungan repositori, bersama-sama dengan semua maklumat yang berkaitan dengan projek dan hubungan negeri repositori ini ke negeri-negeri yang direkodkan lain kerana kandungan telah berkembang dari masa ke masa. Objek komit memegang metadata untuk setiap perubahan yang dilakukan ke repositori, termasuk pengarang, pengirim, tarikh komit, dan mesej log. Tetapi komit menyelamatkan perubahan hanya ke repositori tempatan tetapi tidak ke repositori jauh. Git push mengemas kini perubahan komited anda dan membolehkan anda menghantarnya ke repositori jauh di mana semua pemaju dapat mengaksesnya.