Apa itu GitHub? Lebih dari sekadar kontrol versi Git di cloud

GitHub pada dasarnya adalah layanan hosting repositori Git, yaitu manajemen kode sumber berbasis cloud atau sistem kontrol versi, tetapi itu baru permulaan. Selain itu, GitHub mengimplementasikan fitur untuk tinjauan kode (permintaan tarik, perbedaan, dan permintaan tinjauan), manajemen proyek (termasuk pelacakan dan tugas masalah), integrasi dengan alat pengembang lain, manajemen tim, dokumentasi, dan "pengkodean sosial."

Sesuatu seperti situs jejaring sosial untuk pemrogram, GitHub adalah lingkungan terbuka tempat pemrogram dapat dengan bebas berbagi dan berkolaborasi (bahkan ad hoc) pada kode sumber terbuka. GitHub memudahkan untuk menemukan kode yang berguna, menyalin repositori untuk Anda gunakan sendiri, dan mengirimkan perubahan ke proyek orang lain. Hasilnya, GitHub telah menjadi rumah bagi hampir semua proyek open source yang penting.

Setiap kali saya ingin menjelajahi proyek open source, saya mulai dengan mencari nama proyek. Begitu saya menemukan situs web proyek, saya mencari tautan repositori kodenya, dan sembilan dari 10 saya berakhir di GitHub.

Kontrol versi Git

Sebelum kita dapat memahami apa yang dilakukan GitHub dan cara kerja GitHub, kita perlu memahami Git. Git adalah sistem kontrol versi terdistribusi, aslinya ditulis oleh Linus Torvalds pada tahun 2005 untuk dan dengan bantuan dari komunitas kernel Linux. Saya di sini bukan untuk menjual Anda di Git, jadi saya akan memberi Anda informasi tentang seberapa cepat dan kecil dan fleksibel dan populer itu, tetapi Anda harus tahu itu ketika Anda mengkloning repositori Git ("repo," singkatnya) Anda mendapatkan seluruh riwayat versi di komputer Anda sendiri, bukan hanya cuplikan dari satu cabang pada satu waktu.

Git dimulai sebagai alat baris perintah, sesuai dengan asalnya di komunitas kernel Linux. Anda masih dapat menggunakan baris perintah Git, jika Anda mau, tetapi Anda tidak harus melakukannya. Alih-alih atau sebagai tambahan pada baris perintah, Anda dapat menggunakan klien GitHub gratis di Windows atau Mac, atau sejumlah GUI lain untuk Git, atau editor kode yang terintegrasi dengan Git. Semua opsi ini awalnya lebih mudah digunakan daripada baris perintah. Baris perintah Git sudah diinstal sebelumnya di sebagian besar sistem Mac dan Linux dan mendukung semua operasi; GUI biasanya mendukung subset operasi Git yang sering digunakan.

Git berbeda dari sistem kontrol versi lama seperti Subversion karena ia didistribusikan daripada terpusat. Ini juga cukup cepat, terutama karena sebagian besar operasi terjadi di repositori lokal Anda. Namun demikian, menggunakan Git menambah tingkat kerumitan: memasukkan kode ke repositori lokal Anda dan mendorong komit Anda ke repositori jarak jauh adalah langkah terpisah. Ketika tim melupakan ini (atau tidak diajarkan tentangnya), ini dapat mengarah pada situasi di mana pengembang yang berbeda bekerja dengan basis kode yang berbeda.

Repositori Git jarak jauh bisa berada di server, atau bisa di komputer pengembang lain. Itu memungkinkan banyak kemungkinan alur kerja untuk tim. Satu alur kerja umum melibatkan penggunaan repositori server sebagai repositori "diberkati", yang hanya mengkomit kode yang ditinjau dan diuji dengan baik, seringkali melalui permintaan penarikan yang dikeluarkan dari repositori pengembang.

Fungsionalitas GitHub

Saya telah mencatat bahwa GitHub adalah server Git berbasis cloud untuk hosting kode dan pengkodean sosial, dan GitHub mengimplementasikan fitur untuk peninjauan kode (permintaan tarik, perbedaan, dan permintaan ulasan), manajemen proyek (termasuk pelacakan masalah dan tugas), integrasi dengan alat pengembang lain, manajemen tim, dan dokumentasi.

Inovasi terbaru dalam pengkodean sosial dari GitHub adalah penulis bersama commit , yang Anda capai dengan menambahkan satu atau lebih cuplikan "ditulis bersama" di akhir pesan commit. Mekanisme ini tidak memengaruhi inti repo itu sendiri, dan tidak mengubah tampilan repo di Git biasa, tetapi di GitHub, chrome akan menampilkan banyak pelaku dalam daftar komit, dan memberikan kredit kepada setiap penulis bersama di masing-masing. grafik kontribusi.

Jika mau, Anda dapat memperluas GitHub menggunakan GitHub GraphQL API. Ini merupakan peningkatan yang signifikan dari API GitHub sebelumnya, yang didasarkan pada panggilan REST.

GitHub Enterprise

GitHub.com adalah layanan hosting cloud yang dapat menangani berbagai jenis akun: akun pengembang gratis (hanya repo publik) dan berbayar ($ 7 per bulan), tim ($ 9 per pengguna per bulan), dan bisnis ($ 21 per pengguna per bulan ). Jika Anda ingin menjalankan GitHub Enterprise di lokasi atau di instance cloud Anda sendiri di AWS, Microsoft Azure, Google Cloud Platform, atau IBM Cloud, Anda dapat melakukannya dengan harga $ 21 per pengguna per bulan yang sama dengan akun bisnis yang dihosting. GitHub Enterprise menambahkan beberapa fitur berguna, seperti pengiriman pesan dalam aplikasi kepada pengguna dan penyediaan akses yang terintegrasi dengan direktori LDAP, tetapi melepaskan SLA waktu operasional 99,95 persen GitHub.com untuk akun bisnis yang dihosting.

GitHub vs. Bitbucket

GitHub bukan satu-satunya layanan Git yang ditingkatkan dan dihosting, dan GitHub Enterprise bukan satu-satunya produk lokal untuk perusahaan. Atlassian Bitbucket bersaing dengan keduanya, dengan harga yang sedikit lebih rendah dan dengan level tim lima anggota gratis yang mencakup repo pribadi tak terbatas dan penggunaan Bitbucket Pipelines untuk integrasi berkelanjutan. GitHub adalah situs yang lebih populer untuk proyek sumber terbuka dan memiliki kumpulan pengembang sumber terbuka yang jauh lebih besar. Harga Bitbucket lebih disukai untuk pemula kecil.

GitHub vs. GitLab

GitLab bersaing dengan GitHub dan Bitbucket, baik yang dihosting maupun di lokasi. Di permukaan, GitLab tampaknya memiliki lebih banyak fungsi siklus proses daripada yang lain, tetapi perbedaan dari Atlassian sebagian besar menghilang jika Anda menyertakan Jira saat Anda mengevaluasi Bitbucket. GitLab menawarkan fitur cloud paket Gold untuk proyek open source secara gratis, tetapi fungsionalitas tambahan itu tidak benar-benar mengimbangi komunitas pengembang open-source yang lebih besar di GitHub.

Desktop GitHub

GitHub Desktop, yang ditampilkan di bawah, memudahkan pengelolaan repositori GitHub.com dan GitHub Enterprise Anda. Meskipun tidak menerapkan semua fitur baris perintah Git dan GUI web GitHub, ia menerapkan semua operasi yang akan Anda lakukan setiap hari dari desktop Anda sambil berkontribusi pada proyek. Biasanya, Anda akan mengkloning repo dari GitHub ke GitHub Desktop, menyinkronkannya sesuai kebutuhan, membuat cabang untuk pekerjaan Anda, menjalankan pekerjaan Anda, dan sesekali mengembalikan satu atau beberapa komit.

Untuk bekerja dengan repo yang tidak memiliki hak akses komit dan berkolaborasi, Anda biasanya mulai dengan membagi repo di GitHub dan mengkloning garpu ke desktop Anda. Kemudian Anda menambahkan cabang apa pun yang Anda butuhkan di GitHub Desktop, melakukan perubahan apa pun yang Anda inginkan, menguji pekerjaan Anda, mendorong komit kembali ke repo bercabang jarak jauh Anda, dan terakhir menghasilkan permintaan tarik ke proyek induk.

Anda dapat melihat tombol Permintaan Tarik di kanan atas antarmuka Desktop GitHub. Anda juga dapat melihat banyak komit di proyek Neo4j yang merupakan gabungan dari cabang atau permintaan tarik. Itu tipikal proyek open source dengan sedikit pelaku dan banyak kontributor.

Editor atom

Anda dapat menggunakan editor pemrograman apa pun yang Anda suka untuk mengedit kode, termasuk editor Atom gratis, sumber terbuka, dan dapat diretas dari GitHub (ditampilkan di bawah), yang terintegrasi dengan baik dengan GitHub dan Desktop GitHub. Anda dapat menggunakan Atom di MacOS, Windows, atau Linux. Anda dapat membuka Atom dari GitHub Desktop dengan mengklik kanan repositori yang ingin Anda jelajahi atau edit.

Atom dikirimkan dengan sekitar 90 paket, empat tema UI, dan delapan tema sintaks. Anda dapat menambahkan salah satu dari 7.000 paket dan 2.000 tema ke instalasi Atom Anda. Paket dapat mendukung bahasa pemrograman tertentu, seperti TypeScript, atau menambahkan fungsionalitas, seperti Hidrogen, lingkungan pengkodean interaktif yang mendukung Python, R, JavaScript, dan kernel Jupyter lainnya.

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

Proyek GitHub

Proyek perangkat lunak sumber terbuka sering kali membutuhkan cara untuk menegakkan kontrol kualitas sambil tetap menerima kontribusi dari luar tim inti pembuat komitmen. Kebutuhan akan kontributor sangat besar, tetapi membawa kontributor baru ke dalam proyek sambil mempertahankan integritas basis kode adalah pekerjaan yang sulit dan berpotensi berbahaya. Pada saat yang sama, kebutuhan akan umpan balik dari pengguna proyek juga sangat besar.

GitHub memiliki sejumlah mekanisme yang dapat membantu memperlancar roda proyek open source. Misalnya, pengguna dapat menambahkan masalah ke proyek di GitHub untuk melaporkan bug atau meminta fitur. Beberapa sistem lain menyebut tiket ini . Manajer proyek yang menangani masalah dapat membuat daftar tugas, menetapkan masalah ke kontributor tertentu, menyebutkan kontributor lain yang tertarik sehingga mereka diberitahu tentang perubahan, menambahkan label, dan menambahkan tonggak sejarah.

Untuk berkontribusi pada sebuah proyek, pada dasarnya Anda memulai dari cabang kepala topik yang berisi perubahan berkomitmen yang ingin Anda tambahkan ke cabang dasar proyek dan menginisialisasi permintaan tarik dari cabang kepala, seperti yang ditunjukkan di bawah ini. Kemudian Anda mendorong komit Anda dan menambahkannya ke cabang proyek. Kontributor lain dapat meninjau perubahan yang Anda usulkan, menambahkan komentar tinjauan, berkontribusi pada diskusi pull request, dan menambahkan komitmen mereka sendiri ke pull request.

Setelah semua orang yang terlibat puas dengan perubahan yang diusulkan, seorang pelaku dapat menggabungkan permintaan penarikan. Penggabungan dapat mempertahankan semua komit, memadatkan semua perubahan menjadi satu komit, atau mengubah komitmen dari cabang kepala ke cabang dasar. Jika penggabungan menimbulkan konflik, Anda dapat menyelesaikannya di GitHub atau menggunakan baris perintah.

Peninjauan kode di GitHub memungkinkan tim terdistribusi untuk berkolaborasi secara asinkron. Alat GitHub yang berguna untuk peninjau termasuk diffs (bagian bawah screenshot di bawah), histori (bagian atas), dan tampilan kesalahan (cara untuk melihat evolusi file yang dikomit dengan komit). Diskusi kode di GitHub masuk ke komentar yang disajikan sejalan dengan perubahan kode Anda. Jika alat bawaan tidak mencukupi untuk proyek Anda, Anda dapat menambahkan tinjauan kode dan alat integrasi berkelanjutan dari pasar GitHub. Pengaya pasar sering kali gratis untuk proyek sumber terbuka.

GitHub intinya

Gists adalah repositori GitHub khusus untuk berbagi pekerjaan Anda (publik) atau untuk menyimpan pekerjaan untuk digunakan kembali nanti (rahasia). Mereka dapat berisi file tunggal, bagian dari file, atau aplikasi lengkap. Anda dapat mendownload intinya, mengkloningnya, membuat fork, dan menyematkannya.

Intisari publik dapat ditemukan dan ditemukan dalam pencarian. Anda dapat menggunakan kata kunci untuk mempersempit apa yang Anda temukan, termasuk awalan untuk membatasi hasil menjadi inti dari pengguna tertentu, inti dengan setidaknya N bintang, inti dengan nama file tertentu, dan sebagainya.

Inti rahasia tidak dapat ditelusuri, tetapi siapa pun yang mengetahui URL-nya dapat melihatnya. Jika Anda benar-benar ingin kode Anda dilindungi, gunakan repositori pribadi.

Seperti yang telah kita lihat, GitHub menyediakan repositori Git sebagai layanan, bersama dengan fitur untuk tinjauan kode, manajemen proyek, integrasi dengan alat pengembang lain, manajemen tim, pengkodean sosial, dan dokumentasi. Meskipun GitHub bukan satu-satunya produk dalam kategorinya, GitHub merupakan tempat penyimpanan dominan untuk pengembangan perangkat lunak sumber terbuka.