Daripada perkenalan
Halo Insinyur Perangkat Lunak Senior masa depan.Dasar-dasar Git
Git adalah sistem kontrol versi terdistribusi untuk kode kami. Mengapa kita membutuhkannya? Tim yang terdistribusi memerlukan semacam sistem manajemen kerja. Diperlukan untuk melacak perubahan yang terjadi seiring waktu. Artinya, selangkah demi selangkah kita melihat file mana yang berubah dan bagaimana caranya. Hal ini sangat penting ketika Anda menganalisis apa yang telah dilakukan dalam satu tugas: ini memungkinkan untuk kembali lagi. Mari kita bayangkan sebuah situasi: ada kode yang berfungsi, semuanya baik-baik saja di dalamnya, tetapi kami memutuskan untuk meningkatkan sesuatu, mengubahnya di sini, mengubahnya di sana. Semuanya baik-baik saja, tetapi peningkatan ini merusak separuh fungsi dan membuatnya tidak dapat berfungsi. Jadi, apa selanjutnya? Tanpa Gita, seseorang harus duduk berjam-jam dan mengingat bagaimana segala sesuatunya pada awalnya. Jadi kita kembali ke commit dan selesai. Atau bagaimana jika ada dua pengembang yang melakukan perubahan kode secara bersamaan? Tanpa Git, tampilannya seperti ini: mereka menyalin kode dari kode asli dan melakukan apa yang perlu mereka lakukan. Saatnya tiba dan keduanya ingin menambahkan perubahannya ke folder utama. Dan apa yang harus dilakukan dalam situasi ini?.. Saya bahkan tidak berani memperkirakan waktu untuk melakukan pekerjaan ini. Tidak akan ada masalah sama sekali jika Anda menggunakan Git.Menginstal Git
Mari instal Git di komputer Anda. Saya memahami bahwa setiap orang memiliki OS yang berbeda, jadi saya akan mencoba menjelaskan beberapa kasus.Instalasi untuk Windows
Seperti biasa, Anda perlu mendownload file exe dan menjalankannya. Semuanya sederhana di sini: klik tautan Google pertama , instal dan selesai. Untuk pekerjaan kami akan menggunakan konsol bash yang mereka sediakan. Untuk bekerja di Windows, Anda perlu menjalankan Git Bash. Ini tampilannya di menu mulai:![Memulai Git: panduan terperinci untuk pemula - 2](https://cdn.javarush.com/images/article/7f9c3203-5ae5-46fd-b500-42b3979c2eaf/800.jpeg)
![Memulai Git: panduan terperinci untuk pemula - 3](https://cdn.javarush.com/images/article/52ad1966-4e34-4e47-ba78-8ce1ff395d18/1024.jpeg)
Instalasi untuk Linux
Biasanya git sudah diinstal dan disertakan dalam distribusi Linux, karena ini adalah alat yang awalnya ditulis untuk mengembangkan kernel Linux. Namun ada kalanya hal tersebut tidak ada. Untuk memeriksanya, Anda perlu membuka terminal dan mengetik: git --version. Jika sudah ada jawaban yang jelas, tidak perlu menginstal apa pun. Buka terminal dan instal. Saya bekerja di Ubuntu, jadi saya dapat memberi tahu Anda apa yang harus ditulis untuknya: sudo apt-get install git. Selesai: sekarang Anda dapat menggunakan Git di terminal mana pun.Instalasi di macOS
Di sini juga, pertama-tama Anda perlu memeriksa apakah Git sudah ada (lihat di atas, seperti di Linux). Jika belum, cara termudah adalah mengunduh versi terbaru. Jika XCode sudah terinstall, maka Git pasti akan otomatis terinstall.Pengaturan Git
Git memiliki pengaturan pengguna dari mana pekerjaan akan dilakukan. Ini adalah hal yang masuk akal dan perlu, karena ketika komit dibuat, Git mengambil informasi ini untuk bidang Penulis. Untuk mengatur nama pengguna dan kata sandi untuk semua proyek, Anda perlu memasukkan perintah berikut:
git config --global user.name ”Ivan Ivanov”
git config --global user.email ivan.ivanov@gmail.com
Jika ada kebutuhan untuk mengubah penulis untuk proyek tertentu (untuk proyek pribadi, misalnya), Anda dapat menghapus --global, dan ini akan berhasil:
git config user.name ”Ivan Ivanov”
git config user.email ivan.ivanov@gmail.com
Sedikit teori...
Agar tetap pada topik, disarankan untuk menambahkan beberapa kata dan tindakan baru ke pesan Anda... Jika tidak, tidak akan ada yang perlu dibicarakan. Tentu saja ini beberapa jargon dan salinan bahasa Inggris, jadi saya akan menambahkan artinya dalam bahasa Inggris. Kata-kata dan tindakan apa?- repositori git;
- melakukan (melakukan);
- cabang;
- menggabungkan;
- konflik;
- menarik;
- dorongan;
- cara mengabaikan beberapa file (.gitignore).
Serikat di Git
Gita memiliki beberapa keadaan yang perlu dipahami dan diingat:- tidak terlacak;
- diubah;
- disiapkan (dipentaskan);
- berkomitmen.
Apa artinya?
Ini adalah negara bagian di mana file dari kode kami berada. Artinya, jalur hidup mereka biasanya terlihat seperti ini:- File yang dibuat dan tidak ditambahkan ke repositori akan berada dalam keadaan tidak terlacak.
- Kami membuat perubahan pada file yang telah ditambahkan ke repositori Git - file tersebut dalam status diubah.
- Dari file yang telah kita ubah, kita hanya memilih file (atau semua) yang kita butuhkan (misalnya, kita tidak memerlukan kelas yang dikompilasi), dan kelas-kelas ini dengan perubahannya masuk ke status bertahap.
- Komit dibuat dari file yang disiapkan dari status bertahap dan masuk ke repositori Git. Setelah ini, keadaan yang dipentaskan menjadi kosong. Namun dimodifikasi mungkin masih mengandung sesuatu.
![Memulai Git: panduan terperinci untuk pemula - 4](https://cdn.javarush.com/images/article/6136c12e-46b4-4fda-820c-3287237c48ab/800.jpeg)
Apa itu komitmen
Komit adalah objek utama dalam kontrol versi. Ini berisi semua perubahan sejak komit itu. Komit ditautkan satu sama lain seperti daftar tertaut tunggal. Yaitu: Ada komit pertama. Ketika komit kedua dibuat, komit (komit kedua) mengetahui bahwa komit tersebut muncul setelah komit pertama. Dan dengan cara ini Anda dapat melacak informasinya. Komit juga mempunyai informasinya sendiri, yang disebut metadata:- pengidentifikasi komit unik yang dapat Anda gunakan untuk menemukannya;
- nama penulis komit yang membuatnya;
- komit tanggal pembuatan;
- komentar yang menjelaskan apa yang dilakukan selama penerapan ini.
![Memulai Git: panduan terperinci untuk pemula - 5](https://cdn.javarush.com/images/article/f0a1025b-2f0c-4e65-b9bc-641db79a7704/512.jpeg)
Apa itu cabang
![Memulai Git: panduan terperinci untuk pemula - 6](https://cdn.javarush.com/images/article/29945159-3a11-47a9-ae00-c762a4f5d6fb/512.jpeg)
Memulai dengan Git
Anda hanya dapat bekerja dengan repositori lokal, atau dengan repositori jarak jauh. Untuk menjalankan perintah yang diperlukan, Anda hanya dapat menggunakan repositori lokal. Ini menyimpan semua informasi hanya secara lokal di proyek di folder .git. Jika kita berbicara tentang jarak jauh, maka semua informasi disimpan di suatu tempat di server jarak jauh: hanya salinan proyek yang disimpan secara lokal, perubahannya dapat didorong (git push) ke repositori jarak jauh. Di sini dan selanjutnya kita akan membahas bekerja dengan git di konsol. Tentu saja, Anda dapat menggunakan beberapa solusi grafis (misalnya, di Intellij IDEA), tetapi pertama-tama Anda perlu memahami perintah apa yang dijalankan dan apa artinya.Bekerja dengan Git di repositori lokal
Selanjutnya, saya sarankan Anda mengikuti semua langkah yang saya lakukan saat Anda membaca artikel. Ini akan meningkatkan pemahaman dan retensi Anda terhadap materi. Selamat makan :) Untuk membuat repositori lokal, Anda perlu menulis:
git init
![Memulai Git: panduan terperinci untuk pemula - 7](https://cdn.javarush.com/images/article/5dbf6234-0ea6-40a8-9d37-ce14609d53b4/800.jpeg)
git status
![Memulai Git: panduan terperinci untuk pemula - 8](https://cdn.javarush.com/images/article/348071fa-ccab-4a0c-ae94-6f9f0e6fa671/800.jpeg)
- git add -A - tambahkan semua file dari status bertahap;
- git tambahkan. — tambahkan semua file dari folder ini dan semua file internal. Intinya sama dengan yang sebelumnya;
- git add <filename> - hanya menambahkan file tertentu. Di sini Anda dapat menggunakan ekspresi reguler untuk menambahkan menurut beberapa pola. Misalnya, git add *.java: artinya Anda hanya perlu menambahkan file dengan ekstensi java.
git add *.txt
Untuk memeriksa status, kami menggunakan perintah yang sudah kami ketahui:
git status
![Memulai Git: panduan terperinci untuk pemula - 9](https://cdn.javarush.com/images/article/948c12dc-8227-48d0-8bd3-2ac9ed8be271/800.jpeg)
git commit -m “all txt files were added to the project”
![Memulai Git: panduan terperinci untuk pemula - 10](https://cdn.javarush.com/images/article/5159fcca-3b1c-4308-b1e4-854c1d480385/800.jpeg)
git log
![Memulai Git: panduan terperinci untuk pemula - 11](https://cdn.javarush.com/images/article/b869b551-e804-4ac1-b199-6f16684be943/800.jpeg)
git status
![Memulai Git: panduan terperinci untuk pemula - 12](https://cdn.javarush.com/images/article/00e768e8-6568-42d8-9d03-437c71028b50/800.jpeg)
git status
![Memulai Git: panduan terperinci untuk pemula - 13](https://cdn.javarush.com/images/article/3abb8e35-ebfd-4480-b26e-fc8f19322b36/800.jpeg)
git diff
![Memulai Git: panduan terperinci untuk pemula - 14](https://cdn.javarush.com/images/article/1f3506ae-1746-4ee9-b346-c992be73bb63/800.jpeg)
git add test_resource.txt
git commit -m “added hello word! to test_resource.txt”
Untuk melihat semua komitmen, tulis:
git log
![Memulai Git: panduan terperinci untuk pemula - 15](https://cdn.javarush.com/images/article/12d64adf-c2ae-4d62-ab36-df174fdab5b8/800.jpeg)
git add GitTest.java
git commit -m “added GitTest.java”
git status
![Memulai Git: panduan terperinci untuk pemula - 16](https://cdn.javarush.com/images/article/e5e89bbd-baa2-43cc-bace-cbb24e030c7a/800.jpeg)
Bekerja dengan .gitignore
Jelas bahwa kami hanya ingin menyimpan kode sumber dan tidak ada yang lain di repositori. Apa lagi yang bisa terjadi? Minimal, mengkompilasi kelas dan/atau file yang menciptakan lingkungan pengembangan. Agar Git dapat mengabaikannya, ada file khusus yang perlu dibuat. Kita melakukan ini: kita membuat file di root proyek bernama .gitignore, dan dalam file ini setiap baris akan menjadi pola yang harus diabaikan. Dalam contoh ini, git abaikan akan terlihat seperti ini:
```
*.class
target/
*.iml
.idea/
```
Mari kita lihat sekarang:
- baris pertama adalah mengabaikan semua file dengan ekstensi .class;
- baris kedua adalah mengabaikan folder target dan semua isinya;
- baris ketiga adalah mengabaikan semua file dengan ekstensi .iml;
- Baris keempat adalah mengabaikan folder .idea.
git status
![Memulai Git: panduan terperinci untuk pemula - 17](https://cdn.javarush.com/images/article/78f2e2ef-72df-41ed-9f16-6aeb16be9c92/800.jpeg)
![Memulai Git: panduan terperinci untuk pemula - 18](https://cdn.javarush.com/images/article/cb845a33-8843-4ee9-8842-545e11a8436b/1024.jpeg)
git add .gitignore
git commit -m “added .gitignore file”
Dan sekarang momen sebenarnya: kami memiliki kelas GitTest.class yang dikompilasi dalam keadaan tidak terlacak, yang tidak ingin kami tambahkan ke repositori Git. Di sinilah git abaikan seharusnya berfungsi:
git status
![Memulai Git: panduan terperinci untuk pemula - 19](https://cdn.javarush.com/images/article/d094337b-01dc-43a6-8326-c0ba309d0df7/800.jpeg)
Bekerja dengan cabang dan sejenisnya
Tentu saja, bekerja di satu cabang tidak nyaman dan tidak mungkin dilakukan jika ada lebih dari satu orang dalam tim. Ada cabang untuk ini. Seperti yang saya katakan sebelumnya, cabang hanyalah sebuah penunjuk bergerak untuk melakukan. Pada bagian ini, kita akan melihat cara bekerja di berbagai cabang: bagaimana menggabungkan perubahan dari satu cabang ke cabang lainnya, konflik apa yang mungkin timbul, dan banyak lagi. Untuk melihat daftar semua cabang di repositori dan memahami cabang mana yang Anda gunakan, Anda perlu menulis:
git branch -a
![Memulai Git: panduan terperinci untuk pemula - 20](https://cdn.javarush.com/images/article/3a5ccec8-3fe1-4b6c-b19f-2e66280f4fc6/800.jpeg)
- membuat cabang baru berdasarkan cabang tempat kita berada (99% kasus);
- buat cabang berdasarkan komit tertentu (1%).
Buat cabang berdasarkan komit tertentu
Kami akan mengandalkan pengidentifikasi komit unik. Untuk menemukannya, kami menulis:
git log
![Memulai Git: panduan terperinci untuk pemula - 21](https://cdn.javarush.com/images/article/6f312f65-a820-4faf-a218-686182020e32/800.jpeg)
git checkout -b development 6c44e53d06228f888f2f454d3cb8c1c976dd73f8
Sebuah cabang dibuat yang hanya berisi dua komit pertama dari cabang master. Untuk mengujinya, pertama-tama kita akan memastikan bahwa kita telah pindah ke cabang lain dan melihat jumlah penerapannya:
git status
git log
![Memulai Git: panduan terperinci untuk pemula - 22](https://cdn.javarush.com/images/article/32e2010a-16e6-4342-a082-c5181a876dfd/800.jpeg)
git branch -a
![Memulai Git: panduan terperinci untuk pemula - 23](https://cdn.javarush.com/images/article/b0fa2136-26d5-4c09-867a-9faebdc3be8e/800.jpeg)
Buat cabang berdasarkan cabang saat ini
Cara kedua untuk membuat cabang adalah dengan membangun cabang lain. Saya ingin membuat cabang berdasarkan cabang master, jadi saya harus beralih ke cabang tersebut terlebih dahulu, dan langkah selanjutnya adalah membuat yang baru. Mari lihat:- git checkout master - pindah ke cabang master;
- git status - periksa apakah itu ada di master.
![Memulai Git: panduan terperinci untuk pemula - 24](https://cdn.javarush.com/images/article/fc59d1e4-d887-4b07-add7-0a1ed53ede8b/800.jpeg)
git checkout -b feature/update-txt-files
![Memulai Git: panduan terperinci untuk pemula - 25](https://cdn.javarush.com/images/article/19d396fc-af1c-4d3f-8deb-2dbba09dfaf2/800.jpeg)
Selesaikan konflik
Sebelum kita memahami apa itu konflik, kita perlu membahas tentang penggabungan (merger) satu cabang ke cabang lainnya. Gambar ini dapat menunjukkan proses penggabungan satu cabang ke cabang lainnya:![Memulai Git: panduan terperinci untuk pemula - 26](https://cdn.javarush.com/images/article/5be87984-024c-43ab-be88-a3cdf3331692/512.jpeg)
![Memulai Git: panduan terperinci untuk pemula - 27](https://cdn.javarush.com/images/article/47a002ed-bea0-4be5-b60c-f9c822c5c834/800.jpeg)
git add *.txt
git commit -m “updated txt files”
git log
![Memulai Git: panduan terperinci untuk pemula - 28](https://cdn.javarush.com/images/article/99af1950-f2b6-4792-8fe7-4ad7442dd8fc/800.jpeg)
git checkout master
git merge feature/update-txt-files
git log
![Memulai Git: panduan terperinci untuk pemula - 29](https://cdn.javarush.com/images/article/96f5d6f1-3d22-4597-b85b-b8af900b2e35/800.jpeg)
git branch -D feature/update-txt-files
Sejauh ini sudah jelas, bukan? Mari kita memperumit situasi: sekarang katakanlah kita perlu mengubah file txt lagi. Tapi sekarang file ini juga akan diubah di wizard. Artinya, ini akan berubah secara paralel, dan Git tidak akan dapat memahami apa yang perlu dilakukan dalam situasi ketika kita ingin menggabungkan kode baru ke dalam cabang master. Pergi! Kami membuat cabang baru berdasarkan master, membuat perubahan pada text_resource.txt dan membuat komit untuk masalah ini:
git checkout -b feature/add-header
... делаем изменения в файле
![Memulai Git: panduan terperinci untuk pemula - 30](https://cdn.javarush.com/images/article/0a9176d6-8054-4655-b90a-315e215aa56f/800.jpeg)
git add *.txt
git commit -m “added header to txt”
![Memulai Git: panduan terperinci untuk pemula - 31](https://cdn.javarush.com/images/article/2635b663-7fd8-4d22-947b-df8c50777840/800.jpeg)
git checkout master
… обновor test_resource.txt
![Memulai Git: panduan terperinci untuk pemula - 32](https://cdn.javarush.com/images/article/ac84fa61-0381-48e0-bf5c-1dcf633b779f/800.jpeg)
git add test_resource.txt
git commit -m “added master header to txt”
Dan sekarang momen paling menarik: Anda perlu menggabungkan perubahan dari cabang fitur/add-header ke master. Kita berada di cabang master, jadi yang perlu kita lakukan hanyalah menulis:
git merge feature/add-header
Tetapi kita akan mendapatkan hasil dengan konflik di file test_resource.txt: ![Memulai Git: panduan terperinci untuk pemula - 33](https://cdn.javarush.com/images/article/233f6738-b599-4f22-8552-2d39813d6dd8/800.jpeg)
![Memulai Git: panduan terperinci untuk pemula - 34](https://cdn.javarush.com/images/article/efa04c3b-e279-4f6f-8f05-c3d2318d8ff2/800.jpeg)
- antara “<<<<<<< HEAD” dan “=======” adalah perubahan master yang ada di baris ini di cabang master.
- antara “=======” dan “>>>>>>> feature/add-header” terdapat perubahan yang ada pada cabang feature/add-header.
![Memulai Git: panduan terperinci untuk pemula - 35](https://cdn.javarush.com/images/article/c167e2b2-1cb1-4d19-862e-80ee06a7b6b4/800.jpeg)
git status
![Memulai Git: panduan terperinci untuk pemula - 36](https://cdn.javarush.com/images/article/4416b14b-0e87-4877-b098-702624219f04/800.jpeg)
git add *.txt
![Memulai Git: panduan terperinci untuk pemula - 37](https://cdn.javarush.com/images/article/99a41e85-fb52-429a-86c3-65ad32dd54aa/800.jpeg)
git commit
![Memulai Git: panduan terperinci untuk pemula - 38](https://cdn.javarush.com/images/article/c07c9f20-993a-42ed-91d6-91fbf8f37646/800.jpeg)
Bekerja dengan repositori jarak jauh
Langkah terakhir adalah memahami beberapa perintah lagi yang diperlukan untuk bekerja dengan repositori jarak jauh. Seperti yang sudah saya katakan, repositori jarak jauh adalah suatu tempat di mana repositori disimpan dan dari mana Anda dapat mengkloningnya. Jenis repositori jarak jauh apa yang ada? Ada banyak sekali contoh:-
GitHub adalah repositori terbesar untuk repositori dan pengembangan kolaboratif. Saya sudah menjelaskannya di artikel sebelumnya.
Berlangganan ke akun Github saya . Saya sering memamerkan karya saya di sana, di bidang yang saya pelajari selama saya bekerja. -
GitLab adalah alat siklus hidup DevOps berbasis web sumber terbuka yang menyediakan sistem manajemen repositori kode untuk Git dengan wikinya sendiri, sistem pelacakan masalah , saluran CI/CD, dan fitur lainnya.
Setelah berita bahwa Microsoft membeli GitHub, beberapa pengembang menggandakan pekerjaan mereka di GitLab. -
BitBucket adalah layanan web untuk menghosting proyek dan pengembangan bersama, berdasarkan sistem kontrol versi Mercurial dan Git. Pada suatu waktu, GitHub memiliki keunggulan besar dibandingkan GitHub karena ia memiliki repositori pribadi gratis. Tahun lalu, GitHub juga menyediakan fitur ini untuk semua orang secara gratis.
-
Dan seterusnya…
git clone https://github.com/romankh3/git-demo
Sekarang ada salinan lengkap proyek tersebut secara lokal. Untuk memastikan bahwa salinan terbaru dari proyek tersebut berlokasi secara lokal, Anda perlu, seperti yang mereka katakan, membuang data dengan menulis:
git pull
![Memulai Git: panduan terperinci untuk pemula - 39](https://cdn.javarush.com/images/article/782b84b1-e001-4849-be0b-c319133afca0/800.jpeg)
![Memulai Git: panduan terperinci untuk pemula - 40](https://cdn.javarush.com/images/article/5598fa4d-3058-4994-b17d-63c6b5710076/800.jpeg)
git add test_resource.txt
git commit -m “prepated txt for pushing”
Dan sekarang perintah untuk mendorong ini ke repositori jarak jauh:
git push
![Memulai Git: panduan terperinci untuk pemula - 41](https://cdn.javarush.com/images/article/46c49cfa-afb0-4b3a-b95f-7506a199a189/800.jpeg)
tautan yang bermanfaat
- Dokumen resmi tentang Git dalam bahasa Rusia . Saya merekomendasikannya sebagai panduan referensi.
- Git
GO TO FULL VERSION