Tinimbang introduksi
Hello! Dina iki kita bakal ngomong babagan sistem kontrol versi, yaiku Git.![Miwiti karo Git: pandhuan lengkap kanggo pemula - 1](https://cdn.codegym.cc/images/article/d6ece90f-4588-42d0-9371-c41697f8201d/800.jpeg)
Dasar Git
Git minangka sistem kontrol versi sing disebarake kanggo kode kita. Yagene kita butuh? Tim sing disebarake mbutuhake sawetara sistem kanggo ngatur karyane. Perlu kanggo nglacak owah-owahan sing kedadeyan saka wektu. Sing, kita kudu bisa ndeleng langkah-langkah dening-file sing wis diganti lan carane. Iki penting banget nalika sampeyan nyelidiki apa sing diganti ing konteks tugas siji, saengga bisa mbalekake owah-owahan kasebut.Nginstal Git
Ayo nginstal Java ing komputer.Nginstal ing Windows
Kaya biasane, sampeyan kudu ndownload lan mbukak file exe. Kabeh iku prasaja ing kene: klik ing link Google pisanan , nindakake instalasi, lan iku. Kanggo nindakake iki, kita bakal nggunakake konsol bash sing diwenehake dening Windows. Ing Windows, sampeyan kudu mbukak Git Bash. Mangkene carane katon ing Start Menu:![Miwiti karo Git: pandhuan lengkap kanggo pemula - 2](https://cdn.codegym.cc/images/article/7aa26c09-a314-4e83-8b06-4e886ac37a89/512.jpeg)
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 3](https://cdn.codegym.cc/images/article/8bcda11a-96b8-482c-a20e-19df81d26a49/800.jpeg)
Nginstal ing Linux
Biasane Git minangka bagean saka distribusi Linux lan wis diinstal, amarga iki minangka alat sing asline ditulis kanggo pangembangan kernel Linux. Nanging ana kahanan nalika ora. Kanggo mriksa, sampeyan kudu mbukak terminal lan nulis: git --version. Yen sampeyan entuk jawaban sing bisa dingerteni, mula ora ana sing kudu diinstal. Bukak terminal lan instal Git ing Ubuntu . Aku nggarap Ubuntu, supaya aku bisa menehi pitutur marang kowe apa sing kudu ditulis: sudo apt-get install git.Nginstal ing macOS
Ing kene, sampeyan uga kudu mriksa manawa Git wis ana. Yen sampeyan ora duwe, banjur cara paling gampang kanggo njaluk iku kanggo ngundhuh versi paling anyar kene . Yen Xcode wis diinstal, banjur Git mesthi bakal diinstal kanthi otomatis.Setelan Git
Git nduweni setelan pangguna kanggo pangguna sing bakal ngirim karya. Iki masuk akal lan perlu, amarga Git njupuk informasi iki kanggo lapangan Pengarang nalika komitmen digawe. Nggawe jeneng pangguna lan sandhi kanggo kabeh proyek sampeyan kanthi nggunakake printah ing ngisor iki:
git config --global user.name "Ivan Ivanov"
git config --global user.email ivan.ivanov@gmail.com
Yen sampeyan kudu ngganti penulis kanggo proyek tartamtu, sampeyan bisa mbusak "--global". Iki bakal menehi kita ing ngisor iki:
git config user.name "Ivan Ivanov"
git config user.email ivan.ivanov@gmail.com
Sedikit teori...
Kanggo nyilem menyang topik, kita kudu ngenalake sampeyan sawetara tembung lan tumindak anyar ...- git repositori
- netepi
- cabang
- nggabung
- konflik
- narik
- nyurung
- carane nglirwakake sawetara file (.giignore)
Status ing Git
Git duwe sawetara patung sing kudu dimangerteni lan dieling-eling:- ora dilacak
- diowahi
- dipentasake
- setya
Carane sampeyan kudu ngerti iki?
Iki minangka status sing ditrapake kanggo file sing ngemot kode kita:- Berkas sing digawe nanging durung ditambahake ing gudang nduweni status "ora dilacak".
- Nalika kita nggawe owah-owahan menyang file sing wis ditambahake menyang repositori Git, status kasebut "diowahi".
- Antarane file sing wis diganti, kita milih sing kita butuhake, lan kelas kasebut diganti dadi status "pentas".
- Komit digawe saka file sing wis disiapake ing status panggung lan mlebu ing repositori Git. Sawise iku, ora ana file kanthi status "pentas". Nanging bisa uga isih ana file sing statuse "dimodifikasi".
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 4](https://cdn.codegym.cc/images/article/40d913be-0717-4612-9ad3-4ef73e1bb344/512.jpeg)
Apa komitmen?
A commit minangka acara utama nalika nerangake kontrol versi. Isine kabeh owah-owahan sing digawe wiwit komitmen diwiwiti. Komit disambung bebarengan kaya dhaptar sing disambung. Luwih khusus: Ana komitmen pisanan. Nalika komit kapindho digawe, dheweke ngerti apa sing kedadeyan sawise sing pertama. Lan kanthi cara iki, informasi bisa dilacak. Komit uga duwe informasi dhewe, sing diarani metadata:- pengenal unik commit, sing bisa digunakake kanggo nemokake
- jeneng penulis commit, sing nggawe
- tanggal commit digawe
- komentar sing nggambarake apa sing ditindakake sajrone komitmen
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 5](https://cdn.codegym.cc/images/article/4efaf389-07d9-49ac-bb68-0ceb410bc868/512.jpeg)
Apa iku cabang?
Cabang minangka penunjuk kanggo sawetara komitmen. Amarga komit ngerti komit sing ndhisiki, nalika cabang nuduhake komit, kabeh komit sadurunge uga ditrapake. Dadi, kita bisa ujar manawa sampeyan bisa duwe akeh cabang sing sampeyan pengin nuduhake komitmen sing padha. Pakaryan dumadi ing cabang, mula nalika komit anyar digawe, cabang kasebut mindhah pointer menyang komit sing luwih anyar.Miwiti karo Git
Sampeyan bisa nggarap repositori lokal piyambak uga karo remot. Kanggo nindakake prentah sing dibutuhake, sampeyan bisa mbatesi dhewe menyang repositori lokal. Iku mung nyimpen kabeh informasi project sacara lokal ing folder .git. Yen kita ngomong babagan repositori remot, mula kabeh informasi disimpen ing endi wae ing server remot: mung salinan proyek sing disimpen sacara lokal. Owah-owahan sing digawe kanggo salinan lokal sampeyan bisa di-push (git push) menyang repositori remot. Ing diskusi ing kene lan ing ngisor iki, kita ngomong babagan nggarap Git ing konsol. Mesthi, sampeyan bisa nggunakake sawetara solusi basis GUI (contone, IntelliJ IDEA), nanging pisanan sampeyan kudu ngerti apa printah sing dieksekusi lan apa tegese.Nggarap Git ing repositori lokal
Sabanjure, aku menehi saran supaya sampeyan tindakake lan nindakake kabeh langkah sing daklakoni nalika maca artikel kasebut. Iki bakal nambah pangerten lan penguasaan materi. Inggih, bon appetit! :) Kanggo nggawe repositori lokal, sampeyan kudu nulis:
git init
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 6](https://cdn.codegym.cc/images/article/48de2e66-2655-48d9-acad-0a13de2219a7/800.jpeg)
git status
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 7](https://cdn.codegym.cc/images/article/e06c3a0d-8508-45bb-8e69-9d594a0986f1/800.jpeg)
- git add -A - nambah kabeh file menyang status "staged".
- git nambah. - tambahake kabeh file saka folder iki lan kabeh subfolder. Ateges, iki padha karo sing sadurunge
- git add <file name> - nambah file tartamtu. Ing kene sampeyan bisa nggunakake ekspresi reguler kanggo nambah file miturut sawetara pola. Contone, git add *.java: Iki tegese sampeyan mung pengin nambah file karo ekstensi java.
git add *.txt
Kanggo mriksa status, kita nggunakake printah sing wis kita kenal:
git status
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 8](https://cdn.codegym.cc/images/article/2237218c-212e-420e-9310-1087eb0ffdaa/800.jpeg)
git commit -m "all txt files were added to the project"
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 9](https://cdn.codegym.cc/images/article/b9b67c35-5763-459f-8981-d9a875510e4f/800.jpeg)
git log
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 10](https://cdn.codegym.cc/images/article/e7306161-c798-40f2-9a5f-39aacf0b09ee/800.jpeg)
git status
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 11](https://cdn.codegym.cc/images/article/bc3ca37d-7017-4416-aab7-c28afef0d729/800.jpeg)
git status
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 12](https://cdn.codegym.cc/images/article/12ff5466-87cf-4132-b881-6a8f636aee5e/800.jpeg)
git diff
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 13](https://cdn.codegym.cc/images/article/dd8c0ea3-99f1-491a-9f25-d9186ab057e4/800.jpeg)
git add test_resource.txt
git commit -m "added hello word! to test_resource.txt"
Kanggo ndeleng kabeh commit, tulis:
git log
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 14](https://cdn.codegym.cc/images/article/2401b76c-ec69-456c-b2bb-4329ae15ae96/800.jpeg)
git add GitTest.java
git commit -m "added GitTest.java"
git status
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 15](https://cdn.codegym.cc/images/article/810485d7-307e-43dc-bc7d-a86f45910cb0/800.jpeg)
Nggarap .giignore
Cetha, kita mung pengin nyimpen kode sumber piyambak, lan ora liya, ing repositori. Dadi apa maneh sing bisa ana? Paling ora, kelas kompilasi lan / utawa file sing digawe dening lingkungan pangembangan. Kanggo ngandhani Git supaya ora nggatekake, kita kudu nggawe file khusus. Apa iki: nggawe file disebut .gitignore ing ROOT saka project. Saben baris ing berkas iki makili pola kanggo nglirwakake. Ing conto iki, file .gitignore bakal katon kaya iki:
```
*.class
target/
*.iml
.idea/
```
Ayo dideleng:
- Baris pisanan kanggo nglirwakake kabeh file karo extension .class
- Baris kapindho yaiku nglirwakake folder "target" lan kabeh sing ana
- Baris katelu kanggo nglirwakake kabeh file karo extension .iml
- Baris kaping papat kanggo nglirwakake folder .idea
git status
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 16](https://cdn.codegym.cc/images/article/57aa8dbf-e06a-491f-a9cb-cd79316eca07/800.jpeg)
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 17](https://cdn.codegym.cc/images/article/8c16c33a-4f62-4886-b54b-97394ee68fd3/800.jpeg)
git add .gitignore
git commit -m "added .gitignore file"
Lan saiki wayahe bebener: kita duwe kelas kompilasi GitTest.class sing "ora dilacak", sing ora pengin ditambahake menyang gudang Git. Saiki kita kudu ndeleng efek saka file .gitignore:
git status
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 18](https://cdn.codegym.cc/images/article/6ac8cab7-ee6b-45cf-8840-e2614d113a76/800.jpeg)
Nggarap cabang lan liya-liyane
Alamiah, nggarap mung siji cabang ora trep kanggo pangembang dhewekan, lan mokal yen ana luwih saka siji wong ing tim. Iki sebabe kita duwe cabang. Kaya sing dakkandhakake sadurunge, cabang mung minangka penunjuk sing bisa ditindakake. Ing bagean iki, kita bakal njelajah kerja ing macem-macem cabang: carane nggabungake owah-owahan saka siji cabang menyang cabang liyane, konflik apa sing bisa kedadeyan, lan liya-liyane. Kanggo ndeleng dhaptar kabeh cabang ing repositori lan ngerti sing ana ing ngendi sampeyan, sampeyan kudu nulis:
git branch -a
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 19](https://cdn.codegym.cc/images/article/45b0a983-dbe9-4ea8-9cb7-ab51fa5fde80/800.jpeg)
- nggawe cabang anyar adhedhasar sing kita ana (99% kasus)
- nggawe cabang adhedhasar komitmen tartamtu (1% kasus)
Ayo nggawe cabang adhedhasar komitmen tartamtu
Kita bakal ngandelake pengenal unik komit. Kanggo nemokake, kita nulis:
git log
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 20](https://cdn.codegym.cc/images/article/7f01930c-e706-47a0-a908-d5c286925faa/800.jpeg)
git checkout -b development 6c44e53d06228f888f2f454d3cb8c1c976dd73f8
Cabang digawe kanthi mung loro komit pisanan saka cabang master. Kanggo verifikasi iki, luwih dhisik priksa manawa ngalih menyang cabang liyane lan deleng jumlah komitmen ing kana:
git status
git log
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 21](https://cdn.codegym.cc/images/article/707b0ad4-7b1a-4c54-a3c7-5b4c5e4994ab/800.jpeg)
git branch -a
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 22](https://cdn.codegym.cc/images/article/afbd0ea0-4564-48e6-afa9-ca055ce9fc61/800.jpeg)
Ayo nggawe cabang adhedhasar sing saiki
Cara liya kanggo nggawe cabang yaiku nggawe saka liyane. Aku pengin nggawe cabang adhedhasar cabang master. Pisanan, aku kudu ngalih menyang, lan langkah sabanjure yaiku nggawe sing anyar. Ayo dideleng:- git checkout master - ngalih menyang cabang master
- git status - verifikasi manawa kita ana ing cabang master
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 23](https://cdn.codegym.cc/images/article/85a8c266-4ee6-44ae-91d7-8cb43fd3aae9/800.jpeg)
git checkout -b feature/update-txt-files
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 24](https://cdn.codegym.cc/images/article/0e277473-27e5-4109-96ff-4e7471c1939c/800.jpeg)
Resolusi konflik
Sadurunge njelajah apa konflik, kita kudu ngomong babagan nggabungake cabang siji menyang cabang liyane. Gambar iki nggambarake proses nggabungake cabang siji menyang cabang liyane:![Miwiti karo Git: pandhuan lengkap kanggo pemula - 25](https://cdn.codegym.cc/images/article/1278634a-477e-4f47-ac25-5fd5dbcdd78d/512.jpeg)
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 26](https://cdn.codegym.cc/images/article/2b3b68bc-98fa-426b-ba18-aeac8386dae2/800.jpeg)
git add *.txt
git commit -m "updated txt files"
git log
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 27](https://cdn.codegym.cc/images/article/480108fb-4694-4bd2-bd60-249459f47342/800.jpeg)
git checkout master
git merge feature/update-txt-files
git log
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 28](https://cdn.codegym.cc/images/article/51a026f9-0f3d-4d06-8b6d-411fbe7df1c1/800.jpeg)
git branch -D feature/update-txt-files
Kabeh wis jelas nganti saiki, ya? Ayo dadi rumit kahanan: saiki ayo ngomong yen sampeyan kudu ngganti file txt maneh. Nanging saiki file iki bakal diganti ing cabang master uga. Ing tembung liyane, iku bakal ngganti ing podo karo. Git ora bakal bisa ngerteni apa sing kudu ditindakake nalika kita pengin nggabungake kode anyar kita menyang cabang master. Ayo budal! Kita bakal nggawe cabang anyar adhedhasar master, nggawe owahan kanggo text_resource.txt, lan nggawe komitmen kanggo karya iki:
git checkout -b feature/add-header
... we make changes to the file
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 29](https://cdn.codegym.cc/images/article/9e25fdf0-56c1-48fa-aac4-7cb5e269476a/800.jpeg)
git add *.txt
git commit -m "added header to txt"
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 30](https://cdn.codegym.cc/images/article/ad86777a-fc95-41f1-8168-9741025b35df/800.jpeg)
git checkout master
… we updated test_resource.txt
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 31](https://cdn.codegym.cc/images/article/834a8af7-f699-45aa-8dce-fd2684f6843a/800.jpeg)
git add test_resource.txt
git commit -m "added master header to txt"
Lan saiki titik paling menarik: kita kudu nggabung owah-owahan saka fitur / nambah-header cabang kanggo master. Kita ana ing cabang master, mula kita mung kudu nulis:
git merge feature/add-header
Nanging asil bakal dadi konflik ing file test_resource.txt: ![Miwiti karo Git: pandhuan lengkap kanggo pemula - 32](https://cdn.codegym.cc/images/article/50de1369-6a22-48d0-979f-ad167518e177/800.jpeg)
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 33](https://cdn.codegym.cc/images/article/dc31c147-205b-4103-8297-b0e7bf321301/800.jpeg)
- Owah-owahan sing ana ing baris iki ing cabang master ditemokake ing antarane "<<<<<<<< HEAD" lan "=======".
- Owah-owahan sing ana ing cabang fitur / add-header ditemokake ing antarane "=======" lan ">>>>>>> fitur / add-header".
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 34](https://cdn.codegym.cc/images/article/0c0d2c2b-050b-4653-9b70-a12cf3d0c4a9/800.jpeg)
git status
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 35](https://cdn.codegym.cc/images/article/02a316f3-d70c-4cd0-87c1-9cb8cf9afb99/800.jpeg)
git add *.txt
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 36](https://cdn.codegym.cc/images/article/5a0f94d6-63a1-4a9e-8f23-0bb53c0fcb0b/800.jpeg)
git commit
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 37](https://cdn.codegym.cc/images/article/7b356e97-0738-4cd7-816e-58c8ab6d753b/800.jpeg)
Nggarap repositori remot
Langkah pungkasan yaiku ngerteni sawetara prentah liyane sing dibutuhake kanggo nggarap repositori remot. Kaya sing dakkandhakake, repositori remot yaiku sawetara papan ing ngendi repositori disimpen lan saka ngendi sampeyan bisa nggawe kloning. Apa jenis repositori remot sing ana? Tuladha:-
GitHub minangka platform panyimpenan paling gedhe kanggo repositori lan pangembangan kolaboratif. Aku wis nerangake ing artikel sadurunge.
Tindakake aku ing GitHub . Aku kerep mamerake karyaku ana ing wilayah sing aku sinau kanggo kerja. -
GitLab minangka alat basis web kanggo siklus urip DevOps kanthi sumber terbuka . Iku sistem basis Git kanggo ngatur repositori kode karo wiki dhewe, sistem nelusuri bug , CI/CD pipeline, lan fungsi liyane.
Sawise kabar yen Microsoft tuku GitHub, sawetara pangembang nggawe duplikat proyek ing GitLab. -
BitBucket minangka layanan web kanggo hosting proyek lan pangembangan kolaboratif adhedhasar sistem kontrol versi Mercurial lan Git. Ing sawijining wektu, ana kauntungan gedhe tinimbang GitHub amarga nawakake repositori pribadi gratis. Taun kepungkur, GitHub uga ngenalake kemampuan iki kanggo kabeh wong kanthi gratis.
-
Lan sakteruse…
git clone https://github.com/romankh3/git-demo
Saiki ana salinan lokal lengkap proyek kasebut. Kanggo mesthekake yen salinan lokal proyek kasebut paling anyar, sampeyan kudu narik proyek kasebut kanthi nulis:
git pull
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 38](https://cdn.codegym.cc/images/article/1198a76f-4f1f-46e3-ba6f-bf86200341fa/800.jpeg)
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 39](https://cdn.codegym.cc/images/article/60f8f764-79f5-4db8-8750-4da52035c0e5/800.jpeg)
git add test_resource.txt
git commit -m "prepared txt for pushing"
Printah kanggo push iki menyang repositori remot yaiku:
git push
![Miwiti karo Git: pandhuan lengkap kanggo pemula - 40](https://cdn.codegym.cc/images/article/b56fef05-fccc-4372-b4d0-f5d59fde20bd/800.jpeg)
Link migunani
- Dokumentasi resmi Git . Aku nyaranake minangka referensi.
GO TO FULL VERSION