Apa itu GitHub? Lebih daripada kawalan versi Git di cloud

GitHub merupakan pusat perkhidmatan hosting repositori Git, iaitu sistem pengurusan kod sumber berasaskan cloud atau sistem kawalan versi, tetapi itu baru permulaan. Selain itu, GitHub menerapkan fitur untuk tinjauan kod (permintaan tarik, perbedaan, dan permintaan tinjauan), pengurusan proyek (termasuk pelacakan dan penugasan masalah), integrasi dengan alat pemaju lain, pengurusan pasukan, dokumentasi, dan "pengekodan sosial."

Sesuatu seperti laman rangkaian sosial untuk pengaturcara, GitHub adalah persekitaran terbuka di mana pengaturcara dapat berkongsi dan bekerjasama secara bebas (bahkan ad hoc) pada kod sumber terbuka. GitHub memudahkan anda mencari kod berguna, menyalin repositori untuk kegunaan anda sendiri, dan menyerahkan perubahan pada projek orang lain. Hasilnya, GitHub telah menjadi rumah bagi hampir semua projek sumber terbuka yang penting.

Setiap kali saya ingin meneroka projek sumber terbuka, saya mulakan dengan mencari nama projek. Sebaik sahaja saya menjumpai laman web projek, saya mencari pautan repositori kodnya, dan sembilan daripada 10 saya berakhir di GitHub.

Kawalan versi Git

Sebelum kita dapat memahami apa yang GitHub lakukan dan bagaimana GitHub berfungsi, kita perlu memahami Git. Git adalah sistem kawalan versi terdistribusi, yang awalnya ditulis oleh Linus Torvalds pada tahun 2005 untuk dan dengan bantuan dari komuniti kernel Linux. Saya tidak di sini untuk menjual anda di Git, jadi saya akan memberi anda maklumat tentang seberapa cepat dan kecil dan fleksibel dan popular, tetapi anda harus tahu bahawa apabila anda mengklon repositori Git ("repo", pendek) anda mendapat keseluruhan sejarah versi pada komputer anda sendiri, bukan hanya gambar dari satu cawangan dalam satu masa.

Git bermula sebagai alat baris perintah, sesuai dengan asalnya dalam komuniti kernel Linux. Anda masih boleh menggunakan baris perintah Git, jika anda mahu, tetapi anda tidak perlu. Sebagai ganti atau sebagai tambahan kepada baris perintah, anda boleh menggunakan klien GitHub percuma di Windows atau Mac, atau beberapa GUI lain untuk Git, atau editor kod yang bergabung dengan Git. Semua pilihan ini pada mulanya lebih mudah digunakan daripada baris perintah. Baris arahan Git sudah terpasang pada kebanyakan sistem Mac dan Linux dan menyokong semua operasi; GUI biasanya menyokong subset operasi Git yang sering digunakan.

Git berbeza dengan sistem kawalan versi lama seperti Subversion kerana ia diedarkan dan bukannya berpusat. Ia juga agak pantas, terutamanya kerana kebanyakan operasi berlaku di repositori tempatan anda. Walaupun begitu, menggunakan Git menambahkan tahap kerumitan: melakukan kod ke repositori tempatan anda dan mendorong komit anda ke repositori jauh adalah langkah yang terpisah. Apabila pasukan melupakan ini (atau tidak diajar mengenai hal itu) ia boleh menyebabkan situasi di mana pembangun yang berbeza bekerja dengan pangkalan kod yang telah berbeza.

Repositori Git jauh boleh berada di pelayan, atau di mesin pemaju lain. Itu memungkinkan banyak kemungkinan aliran kerja untuk pasukan. Satu aliran kerja yang biasa melibatkan penggunaan repositori pelayan sebagai repositori "diberkati", yang hanya dikaji, kod yang diuji dengan baik dilakukan, sering melalui permintaan tarik yang dikeluarkan dari repositori pemaju.

Fungsi GitHub

Saya telah menyatakan bahawa GitHub adalah pelayan Git berasaskan cloud untuk hosting kod dan pengekodan sosial, dan bahawa ia menerapkan ciri untuk semakan kod (permintaan tarik, perbezaan, dan permintaan tinjauan), pengurusan projek (termasuk pelacakan dan penugasan masalah), integrasi dengan alat pembangun lain, pengurusan pasukan, dan dokumentasi.

Inovasi terbaru dalam pengekodan sosial dari GitHub adalah penulis bersama komit , yang anda capai dengan menambahkan satu atau lebih treler "co-authored-by" ke akhir mesej komit. Mekanisme ini tidak mempengaruhi inti repo itu sendiri, dan tidak mengubah penampilan repo pada Git biasa, tetapi pada GitHub krom akan menunjukkan banyak komitator dalam senarai komit, dan memberikan kredit kepada setiap pengarang bersama graf sumbangan.

Sekiranya anda mahu, anda boleh memperluas GitHub menggunakan API Grafik GitHub. Ini adalah peningkatan yang ketara berbanding API GitHub sebelumnya, yang berdasarkan pada panggilan REST.

GitHub Enterprise

GitHub.com adalah perkhidmatan hosting awan yang dapat menangani pelbagai jenis akaun: percuma (repos awam) dan akaun pembangun ($ 7 sebulan) berbayar (pasukan $ 9 per pengguna per bulan), dan perniagaan ($ 21 per pengguna per bulan ). Sekiranya anda ingin menjalankan GitHub Enterprise di premis atau dalam keadaan awan anda sendiri di AWS, Microsoft Azure, Google Cloud Platform, atau IBM Cloud, anda boleh melakukannya dengan harga $ 21 per pengguna per bulan yang sama dengan akaun perniagaan yang dihoskan. GitHub Enterprise menambah beberapa ciri berguna, seperti pemesejan dalam aplikasi kepada pengguna dan penyediaan akses yang disepadukan dengan direktori LDAP, tetapi memberikan SLA uptime 99,95 persen GitHub.com untuk akaun perniagaan yang dihoskan.

GitHub vs Bitbucket

GitHub bukan satu-satunya perkhidmatan Git yang ditingkatkan yang dihoskan, dan GitHub Enterprise bukan satu-satunya produk di tempat untuk syarikat. Atlassian Bitbucket bersaing dengan mereka berdua, dengan harga yang sedikit lebih rendah dan dengan tahap pasukan lima anggota percuma yang merangkumi repos peribadi tanpa had dan penggunaan Bitbucket Pipeline untuk integrasi berterusan. GitHub adalah laman web yang lebih popular untuk projek sumber terbuka dan ia mempunyai kumpulan pembangun sumber terbuka yang jauh lebih besar. Harga Bitbucket lebih baik untuk syarikat kecil.

GitHub vs GitLab

GitLab bersaing dengan GitHub dan Bitbucket, yang dihoskan dan juga di tempat. Di permukaan, GitLab nampaknya mempunyai fungsi kitaran hidup lebih banyak daripada yang lain, tetapi perbezaan dari Atlassian kebanyakannya hilang jika anda memasukkan Jira ketika anda menilai Bitbucket. GitLab menawarkan ciri awan pelan Emas untuk projek sumber terbuka secara percuma, tetapi fungsi tambahan itu tidak benar-benar mengimbangi komuniti pembangun sumber terbuka yang lebih besar di GitHub.

Desktop GitHub

GitHub Desktop, yang ditunjukkan di bawah ini, memudahkan anda menguruskan repositori GitHub.com dan GitHub Enterprise anda. Walaupun ia tidak melaksanakan semua ciri baris perintah Git dan GUI web GitHub, ia melaksanakan semua operasi yang akan anda lakukan setiap hari dari desktop anda sambil menyumbang kepada projek. Biasanya, anda akan mengklon repos dari GitHub ke GitHub Desktop, menyegerakkannya mengikut keperluan, membuat cawangan untuk kerja anda, melakukan kerja anda, dan kadang-kadang mengembalikan satu atau lebih komit.

Untuk bekerja dengan repos yang tidak mempunyai hak komited dan berkolaborasi, biasanya anda memulakan dengan memalsukan repo di GitHub dan mengklon garpu ke desktop anda. Kemudian anda menambah cawangan yang anda perlukan di GitHub Desktop, melakukan perubahan yang anda mahukan, menguji kerja anda, mendorong komit kembali ke repo bercabang jauh anda, dan akhirnya menghasilkan permintaan tarik ke projek induk.

Anda dapat melihat butang Tarik Permintaan di kanan atas antara muka GitHub Desktop. Anda juga dapat melihat banyak komitmen dalam projek Neo4j yang merupakan gabungan cawangan atau permintaan tarik. Itu tipikal bagi projek sumber terbuka dengan sedikit komited dan banyak penyumbang.

Penyunting atom

Anda boleh menggunakan mana-mana editor pengaturcaraan yang anda suka untuk mengedit kod, termasuk editor Atom yang boleh digodam bebas, sumber terbuka GitHub (ditunjukkan di bawah), yang berintegrasi dengan GitHub dan GitHub Desktop. Anda boleh menggunakan Atom di MacOS, Windows, atau Linux. Anda boleh membuka Atom dari GitHub Desktop dengan mengklik kanan pada repositori yang ingin anda lihat atau edit.

Atom dihantar dengan kira-kira 90 pakej, empat tema UI, dan lapan tema sintaks. Anda boleh menambah 7,000 pakej dan 2,000 tema ke pemasangan Atom anda. Pakej boleh menyokong bahasa pengaturcaraan tertentu, seperti TypeScript, atau menambahkan fungsi, seperti Hidrogen, persekitaran pengkodan interaktif yang menyokong Python, R, JavaScript dan kernel Jupyter lain.

Atom dibina dengan integrasi HTML, JavaScript, CSS, dan Node.js. Ia berjalan di Electron, kerangka untuk membangun aplikasi lintas platform menggunakan teknologi web. GitHub Desktop juga berjalan di Electron.

Projek GitHub

Projek perisian sumber terbuka sering memerlukan kaedah untuk menegakkan kawalan kualiti sambil tetap menerima sumbangan dari luar pasukan utama komite. Keperluan untuk penyumbang sangat besar, tetapi membawa penyumbang baru ke dalam projek sambil mengekalkan integriti pangkalan kode adalah usaha yang sukar dan berpotensi berbahaya. Pada masa yang sama, keperluan untuk maklum balas dari pengguna projek ini juga sangat besar.

GitHub mempunyai sejumlah mekanisme yang dapat membantu menggerakkan roda projek sumber terbuka. Sebagai contoh, pengguna boleh menambahkan masalah pada projek di GitHub untuk melaporkan pepijat atau meminta ciri. Beberapa sistem lain memanggil tiket ini . Pengurus projek yang menangani masalah dapat menghasilkan senarai tugas, memberikan masalah kepada penyumbang tertentu, menyebut penyumbang lain yang berminat sehingga mereka diberitahu tentang perubahan, menambahkan label, dan menambahkan tonggak.

Untuk menyumbang kepada projek, anda pada dasarnya bermula dari cabang kepala topik yang mengandungi perubahan yang ingin anda tambahkan ke cabang asas projek dan memulakan permintaan tarik dari cabang kepala, seperti yang ditunjukkan di bawah. Kemudian anda mendorong komitmen anda dan menambahkannya ke cabang projek. Penyumbang lain dapat meninjau perubahan yang dicadangkan anda, menambahkan komen ulasan, menyumbang pada perbincangan permintaan tarik, dan menambahkan komitmen mereka sendiri untuk permintaan tarik.

Setelah semua orang yang terlibat berpuas hati dengan perubahan yang dicadangkan, pelayan dapat menggabungkan permintaan tarik. Penggabungan dapat memelihara semua komit, meringankan semua perubahan menjadi satu komit, atau menyusun semula komit dari cabang kepala ke cabang dasar. Sekiranya penggabungan menimbulkan konflik, anda boleh menyelesaikannya di GitHub atau menggunakan baris perintah.

Ulasan kod di GitHub membolehkan pasukan yang diedarkan bekerjasama secara tidak serentak. Alat GitHub yang berguna untuk pengulas merangkumi perbezaan (bahagian bawah tangkapan skrin di bawah), sejarah (bahagian atas), dan pandangan menyalahkan (cara untuk melihat evolusi fail yang dilakukan oleh komit). Perbincangan kod di GitHub masuk ke komen yang disajikan sejajar dengan perubahan kod anda. Sekiranya alat bawaan tidak mencukupi untuk projek anda, anda boleh menambahkan ulasan kod dan alat penyatuan berterusan dari pasar GitHub. Alat tambah Marketplace sering percuma untuk projek sumber terbuka.

Inti GitHub

Gists adalah repositori GitHub khas untuk berkongsi karya anda (awam) atau untuk menyimpan kerja untuk digunakan semula (rahsia) kemudian. Mereka boleh mengandungi satu fail, bahagian fail, atau aplikasi penuh. Anda boleh memuat turun inti, mengkloningnya, menempelkannya, dan membenamkannya.

Maklumat umum boleh ditemui dan ditemui dalam carian. Anda boleh menggunakan kata kunci untuk mempersempit apa yang anda dapati, termasuk awalan untuk mengehadkan hasilnya kepada inti dari pengguna tertentu, inti dengan sekurang-kurangnya bintang N , inti dengan nama fail tertentu, dan sebagainya.

Maklumat rahsia tidak dapat dicari, tetapi sesiapa sahaja yang mempunyai URL dapat melihatnya. Sekiranya anda benar-benar mahu kod anda dilindungi, gunakan repositori peribadi.

Seperti yang telah kita lihat, GitHub menyediakan repositori Git sebagai perkhidmatan, bersama dengan fitur untuk tinjauan kod, pengurusan projek, integrasi dengan alat pembangun lain, pengurusan pasukan, pengekodan sosial, dan dokumentasi. Walaupun GitHub bukan satu-satunya produk dalam kategorinya, ia adalah repositori dominan untuk pengembangan perisian sumber terbuka.