GNU/Linux >> Belajar Linux >  >> Ubuntu

Bagaimana Git Bekerja?

Pendahuluan

Git adalah sistem kontrol versi terdesentralisasi paling populer di dunia. Memiliki pemahaman yang baik tentang Git sangat penting jika Anda ingin membuat kode dan bekerja pada proyek pengembangan perangkat lunak kolaboratif.

Dalam artikel ini, Anda akan mempelajari cara kerja Git dan cara menggunakan fungsi-fungsi krusialnya.

Prasyarat

  • Git diinstal dan dikonfigurasi (lihat cara Instal Git di Windows, Instal Git di Mac, Instal Git di Ubuntu, Instal Git di CentOS 7, atau Instal Git di CentOS 8)

Bagaimana Cara Kerja Git?

Git memungkinkan pengguna untuk melacak perubahan kode dan mengelola proyek mereka menggunakan perintah sederhana.

Inti dari Git adalah repositori digunakan untuk memuat sebuah proyek. Repositori dapat disimpan secara lokal atau di situs web, seperti GitHub. Git memungkinkan pengguna untuk menyimpan beberapa repositori berbeda dan melacak masing-masing secara independen.

Sepanjang pengembangan, proyek memiliki beberapa titik penyimpanan, yang disebut komit . Riwayat komit berisi semua komit, yaitu, perubahan yang diterapkan dalam proyek selama pengembangan. Komit memungkinkan Anda untuk memutar kembali atau memajukan kode dengan cepat ke komit mana pun dalam riwayat komit.

Git menggunakan hash SHA-1 untuk merujuk ke commit. Setiap hash unik menunjuk ke komit tertentu dalam repositori. Menggunakan hash, Git membuat struktur seperti pohon untuk menyimpan dan mengambil data dengan mudah.

File di setiap proyek Git melewati beberapa tahap:

  • Direktori kerja . File yang dimodifikasi, tetapi tidak terlacak dan belum siap untuk dikomit.
  • Direktori pementasan . Menambahkan file yang dimodifikasi ke lingkungan staging berarti file tersebut siap untuk dikomit.
  • Berkomitmen . Cuplikan file dari area pementasan yang disimpan dalam riwayat komit.

Diagram berikut menunjukkan alur kerja dasar Git:

Bagian berikut menjelaskan fungsi Git secara detail.

Pementasan

Saat Anda ingin Git melacak perubahan yang Anda buat pada file tertentu, Anda harus menambahkannya ke staging area. Git mengenali saat Anda memodifikasi file tetapi tidak melacaknya kecuali Anda mementaskannya . Area staging mewakili lapisan keamanan, memungkinkan Anda untuk meninjau perubahan sebelum menerapkannya.

Berada di staging area merupakan prasyarat untuk file yang akan di-commit nanti, yaitu, diimplementasikan pada cabang master. Anda dapat memeriksa file mana yang dilacak Git dengan menjalankan:

git status

Untuk menambahkan file ke staging area, gunakan sintaks berikut:

git add [filename]

Ganti [filename] sintaks dengan nama sebenarnya dari file tersebut.

Misalnya:

Jika Anda berubah pikiran, Anda dapat menghapus file dari area pementasan. Untuk meng-unstage file, gunakan sintaks berikut:

git rm --cached [filename]

Misalnya:

Membuat Komitmen

Komit mewakili titik penyimpanan untuk pekerjaan Anda, cuplikan kode Anda pada titik waktu tertentu. Menambahkan file ke staging area berarti file tersebut siap untuk di-commit.

Untuk memeriksa apakah Anda memiliki file yang siap dikomit, jalankan:

git status

Misalnya:

Di sini kita melihat bahwa tiga file siap untuk dikomit. Untuk mengkomitnya, gunakan sintaks berikut:

git commit -m "Notes about the commit"

Setiap komit harus memiliki deskripsi yang ditentukan setelah -m flag, yang nantinya akan membantu Anda mengetahui tentang apa komit itu.

Misalnya:

Outputnya berisi komit dan menyatakan apa yang diubah.

Anda dapat memeriksa riwayat komit dengan menjalankan:

git log

Output menunjukkan log dari semua komit yang telah Anda buat, siapa yang membuat komit, tanggal, dan catatan komit. Menambahkan --oneline flag menunjukkan riwayat komit yang diringkas dalam satu baris. Menghilangkan tanda menunjukkan riwayat komit yang terperinci.

Mengembalikan

Jika Anda telah membuat kesalahan selama pengembangan proyek Anda atau ingin mengembalikan komit karena alasan apa pun, git revert memungkinkan Anda melakukannya.

git revert perintah mengembalikan komit tertentu, yaitu, membatalkan komit yang Anda buat untuk menghapus perubahan dari cabang master.

Sintaksnya adalah:

git revert [commit_ID]

Temukan ID komit dengan menjalankan git log . Kode 7 karakter adalah ID komit.

Contoh berikut menunjukkan git revert perintah:

git reset perintah secara permanen membawa Anda kembali ke titik tertentu dalam pengembangan. Semua file dan perubahan yang ditambahkan setelah titik waktu tersebut tidak akan diubah jika Anda ingin menambahkannya kembali.

Peringatan: Gunakan git reset hanya jika Anda sepenuhnya yakin ingin membatalkan/menghapus bagian dari kode Anda, karena tindakan ini tidak dapat diubah.

Sintaksnya adalah:

git reset [commit_ID]

Menentukan --hard flag menghapus file yang tidak dipentaskan, sehingga tidak memungkinkan untuk mengembalikannya.

Forking

Fork adalah salinan lengkap dari repositori yang ada yang memungkinkan Anda membuat perubahan dan bereksperimen tanpa memengaruhi proyek asli. Forking adalah cara seseorang untuk mengusulkan perubahan pada proyek yang sudah ada, atau dapat menjadi titik awal untuk proyek Anda sendiri jika kodenya open source.

Jika Anda ingin mengusulkan perubahan atau perbaikan bug untuk suatu proyek, Anda dapat melakukan fork repositori, melakukan perbaikan, dan membuat permintaan tarik ke pemilik proyek.

Diagram berikut mengilustrasikan cara kerja forking:

Untuk melakukan fork repositori, ikuti langkah-langkah di bawah ini:

1. Masuk ke akun GitHub Anda.

2. Kunjungi halaman repositori di GitHub dan klik Fork pilihan.

3. Tunggu hingga proses forking selesai. Setelah selesai, Anda akan memiliki salinan repositori di akun GitHub Anda.

4. Langkah selanjutnya adalah mengambil URL repositori dari Kode bagian dan mengkloning repositori ke mesin lokal Anda.

5. Kloning repositori menggunakan sintaks berikut:

git clone [repository URL]

Masukkan URL sebagai pengganti [repository URL] sintaks.

Misalnya:

Dalam contoh ini, kami telah membuat fork dari springmvc-raml-plugin repositori, dan sekarang kita bebas untuk mengimplementasikan perubahan kita atau mulai membuat plugin baru di atas plugin yang sudah ada.

Percabangan

Percabangan adalah fitur di Git yang memungkinkan pengembang untuk mengerjakan salinan kode asli untuk memperbaiki bug atau mengembangkan fitur baru. Dengan mengerjakan cabang, pengembang tidak memengaruhi cabang master sampai mereka ingin menerapkan perubahan.

Cabang master umumnya mewakili versi stabil kode Anda, yang dirilis atau diterbitkan. Itulah mengapa Anda harus menghindari penambahan fitur baru dan kode baru ke cabang master jika tidak stabil.

Percabangan menciptakan lingkungan yang terisolasi untuk mencoba fitur-fitur baru, dan jika Anda menyukainya, Anda dapat menggabungkannya ke dalam cabang master. Jika terjadi kesalahan, Anda dapat menghapus cabang tersebut, dan cabang utama tetap tidak tersentuh.

Percabangan memfasilitasi pemrograman kolaboratif dan memungkinkan setiap orang untuk mengerjakan bagian kode mereka secara bersamaan.

Diagram berikut adalah representasi visual dari percabangan di Git:

Sintaks untuk membuat cabang baru di Git adalah:

git branch [branch-name]

Masukkan nama cabang Anda sebagai pengganti [branch-name] sintaksis. Misalnya:

Dalam contoh ini, kami membuat cabang baru bernama feature-1 .

Penggabungan dan Konflik

git merge perintah memungkinkan pengembang mengerjakan fitur baru atau perbaikan bug di cabang terpisah untuk menggabungkan perubahan mereka dengan cabang utama setelah selesai. Menggabungkan perubahan berarti mengimplementasikannya ke dalam cabang master.

Pengembang dapat memasukkan perubahan mereka menggunakan git merge tanpa harus mengirimkan pekerjaan mereka ke semua orang yang mengerjakan proyek.

Untuk melihat cabang Anda yang ada, jalankan:

git branch -a

Untuk tutorial ini, kami telah membuat cabang terpisah bernama feature-1 . Untuk menggabungkan fitur-1 cabang dengan master cabang, ikuti langkah-langkah di bawah ini:

1. Beralih ke cabang master. git merge perintah mengharuskan Anda untuk berada di cabang penerima gabungan. Jalankan perintah berikut untuk beralih ke cabang master:

git checkout master

2. Setelah beralih ke cabang master, gunakan sintaks berikut untuk menggabungkan perubahan Anda:

git merge [branch-name]

Masukkan nama cabang Anda sebagai pengganti [branch-name] sintaks.

Misalnya:

Git secara otomatis memasukkan perubahan Anda ke cabang master, dapat dilihat oleh siapa saja yang mengerjakan proyek.

Namun, terkadang Anda mungkin menemukan penggabungan konflik .

Misalnya, konflik terjadi jika seseorang memutuskan untuk mengedit cabang master saat Anda mengerjakan cabang lain. Jenis konflik ini terjadi karena Anda ingin menggabungkan perubahan Anda dengan cabang master, yang sekarang berbeda dari salinan kode Anda.

Panduan terperinci kami menawarkan beberapa metode berbeda untuk menyelesaikan konflik gabungan di Git.

Mengambil/Menarik Perubahan

git fetch dan git pull perintah keduanya digunakan untuk mengambil perubahan dari repositori jarak jauh.

Perbedaannya adalah git fetch hanya mengambil metadata dari repositori jarak jauh tetapi tidak mentransfer apa pun ke repositori lokal Anda. Ini hanya memberi tahu Anda jika ada perubahan yang tersedia sejak penarikan terakhir Anda.

Dalam contoh berikut, git fetch memberi tahu kami bahwa ada beberapa perubahan di repositori jarak jauh, tetapi tidak ada yang berubah di repositori lokal:

Sebaliknya, git pull juga memeriksa setiap perubahan baru di repositori jarak jauh dan membawa perubahan tersebut ke repositori lokal Anda.

Jadi, git pull melakukan dua hal dengan satu perintah - git fetch , dan git merge . Perintah tersebut mengunduh perubahan yang dibuat pada cabang Anda saat ini dan memperbarui kode di repositori lokal Anda.

Misalnya:

Dalam output ini, kita melihat bahwa itu adalah tipe penggabungan maju cepat dan Git menarik satu file ke repositori lokal - README.md .

Mendorong Perubahan

git push perintah melakukan kebalikan dari git pull , memungkinkan Anda untuk membagikan perubahan dan memublikasikannya di repositori jarak jauh.

Saat Anda membuat perubahan secara lokal dan ingin memasukkannya ke repositori jarak jauh, jalankan:

git push

Misalnya:

Jika Anda telah membuat cabang baru secara lokal, yang tidak ada dari jarak jauh, perintah akan mengembalikan kesalahan saat mencoba mendorong perubahan:

Git menawarkan solusi dalam output. Jalankan perintah yang ditentukan dalam output untuk mendorong cabang Anda ke hulu:

Mengubah Basis Ulang

Saat Anda membuat cabang, Git membuat salinan kode yang ada untuk Anda kembangkan lebih lanjut. Terkadang Anda mungkin perlu memasukkan perubahan baru dari cabang utama untuk mengikuti perkembangan umum.

Rebasing melibatkan penerapan perubahan baru dari cabang master ke cabang fitur Anda. Itu berarti Git memutar ulang perubahan baru dari cabang master, membuat komit di atas ujung cabang fitur Anda.

Ikuti langkah-langkah ini untuk mengubah basis cabang fitur Anda:

1. Pindah ke cabang fitur menggunakan git checkout . Sintaksnya adalah:

git checkout [branch-name]

2. Jalankan perintah berikut untuk rebase cabang Anda:

git rebase master

Diagram berikut menunjukkan cara kerja fungsi rebase:


Ubuntu
  1. Bagaimana Cara Kerja Awk ‘!a[$0]++’?

  2. Bagaimana Cara Kerja Sticky Bit?

  3. Ssh – Bagaimana Tcp-keepalive Bekerja Di Ssh?

  1. Bagaimana Sanlock Bekerja di Virtualisasi RedHat

  2. Bagaimana rm bekerja? Apa yang rm lakukan?

  3. Bagaimana sebenarnya sig_atomic_t bekerja?

  1. Apa itu NGINX? Bagaimana cara kerjanya?

  2. Bagaimana cara membatasi ukuran file saat komit?

  3. Bagaimana cara kerja debugger di Linux?