Giriş ýerine
Salam geljekki uly programma inereneri.Git esaslary
Git, kodumyz üçin paýlanan wersiýa dolandyryş ulgamy. Näme üçin bize gerek? Paýlanan toparlara haýsydyr bir iş dolandyryş ulgamy gerek. Wagtyň geçmegi bilen bolup geçýän üýtgeşmeleri yzarlamak zerur. .Agny, haýsy faýllaryň üýtgändigini we nädip üýtgändigini ädimme-ädim görýäris. Bu, bir meseläniň içinde edilenleri seljereniňizde has möhümdir: bu yza gaýdyp gelmäge mümkinçilik berýär. Aagdaýy göz öňüne getireliň: iş kody bardy, hemme zat gowydy, ýöne bir zady gowulaşdyrmak, bärde üýtgetmek, şol ýerde düzeltmek kararyna geldik. Hemme zat gowy boldy, ýöne bu gowulaşma işlemegiň ýarysyny bozdy we işlemegi mümkin etmedi. Onda näme bolar? Gita bolmasa, birnäçe sagatlap oturmalydy we hemme zadyň aslynda nähili bolandygyny ýada salmalydy. Şeýlelik bilen, biz diňe borçnama gaýdyp gelýäris we bu hut şu. Ora-da bir wagtyň özünde kodlaryny üýtgedýän iki dörediji bar bolsa näme etmeli? Git bolmasa, şuňa meňzeýär: kody asyl nusgasyndan göçürdiler we etmeli zatlaryny etdiler. Wagt gelýär we ikisi hem üýtgeşmelerini esasy bukja goşmak isleýär. Bu ýagdaýda näme etmeli? .. Bu işi etmegiň wagtyna baha bermäge-de het edip bilemok. Git ulansaňyz, beýle problema bolmaz.Git gurmak
Git-i kompýuteriňize guralyň. Her kimiň dürli OS-yň bardygyna düşünýärin, şonuň üçin birnäçe ýagdaýy düşündirmäge synanyşaryn.Windows üçin gurnama
Hemişe bolşy ýaly, exe faýlyny göçürip alyp işlemeli. Bu ýerde hemme zat ýönekeý: ilkinji Google baglanyşygyna basyň , guruň we hut şu. Iş üçin olaryň berýän baş konsolyny ulanarys. Windows-da işlemek üçin “Git Bash” -y işletmeli. Başlangyç menýusynda görnüşi şeýle:![Git bilen başlamak: täze başlanlar üçin jikme-jik gollanma - 2](https://cdn.javarush.com/images/article/7f9c3203-5ae5-46fd-b500-42b3979c2eaf/800.jpeg)
![Git bilen başlamak: täze başlanlar üçin jikme-jik gollanma - 3](https://cdn.javarush.com/images/article/52ad1966-4e34-4e47-ba78-8ce1ff395d18/1024.jpeg)
Linux üçin gurnama
Adatça git eýýäm Linux ýadrosyny ösdürmek üçin ýazylan gural bolany üçin Linux eýýäm paýlanylýar we gurulýar. Itöne ol ýerde bolmadyk ýagdaýlar bolýar. Muny barlamak üçin terminaly açmaly we git --version ýazmaly. Eger anyk jogap bar bolsa, hiç zat gurmagyň zerurlygy ýok. Terminal açyň we guruň. Ubuntu-da işleýärin, şonuň üçin näme ýazjagyňyzy aýdyp bilerin: sudo apt-get install git. Ine, indi: Git-i islendik terminalda ulanyp bilersiňiz.MacOS-da gurnamak
Bu ýerde-de ilki bilen Gitiň eýýäm bardygyny ýa-da ýokdugyny barlamaly (ýokarda, Linux-da bolşy ýaly). Notok bolsa, iň aňsat usuly iň soňky wersiýasyny göçürip almakdyr . XCode gurlan bolsa, Git hökman awtomatiki gurlar.Git gurmak
Gitde işiň ýerine ýetiriljek ulanyjy sazlamasy bar. Bu ýerlikli we zerur zat, sebäbi borçnama döredilende, Git bu maglumatlary Awtor meýdançasy üçin alýar. Projectshli taslamalar üçin ulanyjy adyny we parolyny gurmak üçin aşakdaky buýruklary girizmeli:
git config --global user.name ”Ivan Ivanov”
git config --global user.email ivan.ivanov@gmail.com
Belli bir taslama üçin awtory üýtgetmek zerurlygy bar bolsa (mysal üçin şahsy taslama üçin), --global-ny aýyryp bilersiňiz we bu işlär:
git config user.name ”Ivan Ivanov”
git config user.email ivan.ivanov@gmail.com
Biraz teoriýa ...
Mowzukda galmak üçin habaryňyza birnäçe täze söz we hereket goşmak maslahat berilýär ... Otherwiseogsam gürleşjek zat bolmaz. Elbetde, bu birneme manysyz we iňlis diliniň göçürmesi, şonuň üçin iňlis dilinde many goşaryn. Haýsy sözler we hereketler?- git ammary;
- bermek (bermek);
- şahasy;
- birleşdirmek;
- dawa-jenjeller;
- çekmek;
- iteklemek;
- käbir faýllary nädip äsgermezlik etmeli (.gitignore).
Git ştatlary
Gitanyň düşünmeli we ýatda saklamaly birnäçe ýagdaýy bar:- gözegçilik edilmedik;
- üýtgedildi;
- taýýarlanan (sahnalaşdyrylan);
- ygrarly.
Bu näme many berýär?
Bular kodumyzdaky faýllaryň ýerleşýän ştatlarydyr. .Agny, olaryň durmuş ýoly adatça şeýle görünýär:- Döredilen we ammarda goşulmadyk bir faýl gözegçiliksiz ýagdaýda bolar.
- Git ammaryna eýýäm goşulan faýllara üýtgeşmeler girizýäris - olar üýtgedilen ýagdaýda.
- Üýtgeden faýllarymyzdan diňe zerur (ýa-da hemmesini) saýlaýarys (mysal üçin, düzülen synplar gerek däl) we üýtgeşmeler bilen bu synplar sahnalaşdyrylan ýagdaýa düşýär.
- Sahnalaşdyrylan ýagdaýdan taýýarlanan faýllardan borçnama döredilýär we Git ammaryna girýär. Ondan soň sahnalaşdyrylan ýagdaý boş. Modifiedöne üýtgedilen bir zat bolup biler.
![Git bilen başlamak: täze başlanlar üçin jikme-jik gollanma - 4](https://cdn.javarush.com/images/article/6136c12e-46b4-4fda-820c-3287237c48ab/800.jpeg)
Wada näme?
Wada wersiýa gözegçiliginde esasy zat. Bu borçnamadan bäri ähli üýtgeşmeleri öz içine alýar. Borçlar ýeke-täk baglanyşyk sanawy ýaly biri-birine baglydyr. : Agny: Ilkinji borç bar. Ikinji wada döredilende, (ikinjisi) birinjiden soň gelýändigini bilýär. Şeýlelik bilen maglumatlary yzarlap bilersiňiz. Ylalaşygyň metadata diýlip atlandyrylýan öz maglumatlary hem bar:- tapyp boljak özboluşly borç kesgitleýjisi;
- döreden borçnamanyň awtorynyň ady;
- döredilen senesini bermek;
- bu borçnamanyň dowamynda edilenleri beýan edýän teswir.
![Git bilen başlamak: täze başlanlar üçin jikme-jik gollanma - 5](https://cdn.javarush.com/images/article/f0a1025b-2f0c-4e65-b9bc-641db79a7704/512.jpeg)
Şaha näme?
![Git bilen başlamak: täze başlanlar üçin jikme-jik gollanma - 6](https://cdn.javarush.com/images/article/29945159-3a11-47a9-ae00-c762a4f5d6fb/512.jpeg)
Git bilen başlamak
Diňe ýerli ammar ýa-da uzakdaky ammar bilen işläp bilersiňiz. Zerur buýruklary işlemek üçin diňe ýerli ammary ulanyp bilersiňiz. Projecthli maglumatlary diňe taslamada .git bukjasynda saklaýar. Uzakdan gürlesek, ähli maglumatlar uzak serwerde bir ýerde saklanýar: taslamanyň diňe bir nusgasy ýerli görnüşde saklanýar, üýtgeşmeleri uzakdaky ammarlara geçirip bolýar. Bu ýerde we mundan beýläk konsolda git bilen işlemegi maslahatlaşarys. Elbetde, käbir grafiki çözgütleri ulanyp bilersiňiz (mysal üçin, Intellij IDEA-da), ýöne ilki bilen haýsy buýruklaryň bolup geçýändigini we olaryň manysyny anyklamaly.Git bilen ýerli ammarda işlemek
Ondan soň, makalany okanyňyzda eden ähli ädimlerimi ýerine ýetirmegiňizi maslahat berýärin. Bu, materialy düşünmegiňizi we saklamagyňyzy gowulaşdyrar. Şeýlelik bilen, işdäňiz :) amerli ammar döretmek üçin ýazmaly:
git init
![Начало работы с Git: подробный гайд для новичков - 7](https://cdn.javarush.com/images/article/5dbf6234-0ea6-40a8-9d37-ce14609d53b4/800.jpeg)
git status
![Начало работы с Git: подробный гайд для новичков - 8](https://cdn.javarush.com/images/article/348071fa-ccab-4a0c-ae94-6f9f0e6fa671/800.jpeg)
- git add -A - sahnalaşdyrylan ýagdaýdaky ähli faýllary goşuň;
- git goş. - bu bukjadaky ähli faýllary we içerki faýllary goşuň. Aslynda öňki bilen deňdir;
- git <filename> goşmak - diňe belli bir faýl goşýar. Bu ýerde käbir nagyşlara görä goşmak üçin yzygiderli aňlatmalary ulanyp bilersiňiz. Mysal üçin, git add * .java: bu diňe java giňeltmesi bilen faýl goşmalydygyny aňladýar.
git add *.txt
Theagdaýy barlamak üçin eýýäm bilýän buýrugy ulanýarys:
git status
![Начало работы с Git: подробный гайд для новичков - 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”
![Начало работы с Git: подробный гайд для новичков - 10](https://cdn.javarush.com/images/article/5159fcca-3b1c-4308-b1e4-854c1d480385/800.jpeg)
git log
![Начало работы с Git: подробный гайд для новичков - 11](https://cdn.javarush.com/images/article/b869b551-e804-4ac1-b199-6f16684be943/800.jpeg)
git status
![Начало работы с Git: подробный гайд для новичков - 12](https://cdn.javarush.com/images/article/00e768e8-6568-42d8-9d03-437c71028b50/800.jpeg)
git status
![Начало работы с Git: подробный гайд для новичков - 13](https://cdn.javarush.com/images/article/3abb8e35-ebfd-4480-b26e-fc8f19322b36/800.jpeg)
git diff
![Начало работы с Git: подробный гайд для новичков - 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”
Commhli borçnamalara seretmek üçin ýazyň:
git log
![Начало работы с Git: подробный гайд для новичков - 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
![Начало работы с Git: подробный гайд для новичков - 16](https://cdn.javarush.com/images/article/e5e89bbd-baa2-43cc-bace-cbb24e030c7a/800.jpeg)
.Gitignore bilen işlemek
Diňe deslapky kody we ammarda başga hiç zady saklamak isleýändigimiz düşnüklidir. Başga näme bolup biler? Iň bolmanda, ösüş gurşawyny döredýän düzülen synplar we / ýa-da faýllar. Git olary äsgermezlik etmek üçin döredilmeli ýörite faýl bar. Muny edýäris: .gitignore atly taslamanyň kökünde bir faýl döredýäris we bu faýlda her setir äsgermezlik bolar. Bu mysalda git äsgermezlik şeýle bolar:
```
*.class
target/
*.iml
.idea/
```
Indi seredeliň:
- birinji setir .class giňeltmesi bilen ähli faýllary äsgermezlik etmek;
- ikinji setir, maksat bukjasyna we içindäki ähli zatlara üns bermezlik;
- üçünji setir .iml giňeltmesi bilen ähli faýllary äsgermezlik etmek;
- Dördünji setir .idea bukjasyna üns bermezlikdir.
git status
![Начало работы с Git: подробный гайд для новичков - 17](https://cdn.javarush.com/images/article/78f2e2ef-72df-41ed-9f16-6aeb16be9c92/800.jpeg)
![Начало работы с Git: подробный гайд для новичков - 18](https://cdn.javarush.com/images/article/cb845a33-8843-4ee9-8842-545e11a8436b/1024.jpeg)
git add .gitignore
git commit -m “added .gitignore file”
Indi hakykat pursaty: Git ammaryna goşmak islemedik, gözegçilik edilmedik ýagdaýda düzülen GitTest.class synpymyz bar. Git äsgermezlik şu ýerde işlemeli:
git status
![Начало работы с Git: подробный гайд для новичков - 19](https://cdn.javarush.com/images/article/d094337b-01dc-43a6-8326-c0ba309d0df7/800.jpeg)
Şahalar we şuňa meňzeşler bilen işlemek
Elbetde, bir şahada işlemek bir topar üçin amatsyz we toparda birden köp adam bar bolsa mümkin däl. Munuň üçin bir şaha bar. Öň hem aýdyşym ýaly, bir şaha diňe ýerine ýetirýän hereketlendiriji görkeziji. Bu bölümde dürli şahalarda işlemäge serederis: üýtgeşmeleri bir şahadan beýlekisine nädip birleşdirmeli, haýsy gapma-garşylyklar ýüze çykyp biler we başgalar. Ammardaky ähli şahalaryň sanawyny görmek we haýsysyna degişlidigiňize düşünmek üçin ýazmaly:
git branch -a
![Начало работы с Git: подробный гайд для новичков - 20](https://cdn.javarush.com/images/article/3a5ccec8-3fe1-4b6c-b19f-2e66280f4fc6/800.jpeg)
- işleýän bölümimize esaslanyp täze şahamça döretmek (ýagdaýlaryň 99%);
- belli bir borçnama esasynda şahamça dörediň (1%).
Belli bir borçnama esasynda şahamça dörediň
Üýtgeşik kesgitleýjä bil baglarys. Muny tapmak üçin ýazýarys:
git log
![Начало работы с Git: подробный гайд для новичков - 21](https://cdn.javarush.com/images/article/6f312f65-a820-4faf-a218-686182020e32/800.jpeg)
git checkout -b development 6c44e53d06228f888f2f454d3cb8c1c976dd73f8
Baş şahadan diňe ilkinji iki işi öz içine alýan şaha döredilýär. Muny synamak üçin ilki bilen başga bir şaha göçendigimize göz ýetireris we ýerine ýetirilen işleriň sanyna serederis:
git status
git log
![Начало работы с Git: подробный гайд для новичков - 22](https://cdn.javarush.com/images/article/32e2010a-16e6-4342-a082-c5181a876dfd/800.jpeg)
git branch -a
![Начало работы с Git: подробный гайд для новичков - 23](https://cdn.javarush.com/images/article/b0fa2136-26d5-4c09-867a-9faebdc3be8e/800.jpeg)
Häzirki şahasyna esaslanyp şahany dörediň
Şaha döretmegiň ikinji usuly başga birine gurmakdyr. Baş şahanyň esasynda bir şahamça döretmek isleýärin, şonuň üçin ilki oňa geçmeli, indiki ädim bolsa täze bölüm döretmek. Geliň seredeliň:- git Checkout master - baş şaha göçmek;
- git statusy - ussadyndadygyny barlaň.
![Начало работы с Git: подробный гайд для новичков - 24](https://cdn.javarush.com/images/article/fc59d1e4-d887-4b07-add7-0a1ed53ede8b/800.jpeg)
git checkout -b feature/update-txt-files
![Начало работы с Git: подробный гайд для новичков - 25](https://cdn.javarush.com/images/article/19d396fc-af1c-4d3f-8deb-2dbba09dfaf2/800.jpeg)
Dawa-jenjelleri çözüň
Dawa-jenjeliň nämedigine düşünmezden ozal bir şahany beýlekisine birleşdirmek (birleşdirmek) hakda gürleşmeli. Bu surat, bir şahanyň beýlekisine birleşdirilende prosesi görkezip biler:![Начало работы с Git: подробный гайд для новичков - 26](https://cdn.javarush.com/images/article/5be87984-024c-43ab-be88-a3cdf3331692/512.jpeg)
![Начало работы с Git: подробный гайд для новичков - 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
![Начало работы с Git: подробный гайд для новичков - 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
![Начало работы с Git: подробный гайд для новичков - 29](https://cdn.javarush.com/images/article/96f5d6f1-3d22-4597-b85b-b8af900b2e35/800.jpeg)
git branch -D feature/update-txt-files
Häzirlikçe düşnükli, şeýlemi? Theagdaýy çylşyrymlaşdyralyň: indi txt faýlyny täzeden üýtgetmelidigimizi aýdalyň. Emma indi bu faýl jadygöýde hem üýtgediler. Itagny, paralel üýtgär we Git täze şahany baş şaha birleşdirmek islän ýagdaýymyzda näme edilmelidigine düşünip bilmez. Git! Ussat esasly täze bir bölüm döredýäris, text_resource.txt-a üýtgeşmeler girizýäris we bu meselede borçnama döredýäris:
git checkout -b feature/add-header
... делаем изменения в файле
![Начало работы с Git: подробный гайд для новичков - 30](https://cdn.javarush.com/images/article/0a9176d6-8054-4655-b90a-315e215aa56f/800.jpeg)
git add *.txt
git commit -m “added header to txt”
![Начало работы с Git: подробный гайд для новичков - 31](https://cdn.javarush.com/images/article/2635b663-7fd8-4d22-947b-df8c50777840/800.jpeg)
git checkout master
… обновor test_resource.txt
![Начало работы с Git: подробный гайд для новичков - 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”
Indi bolsa iň gyzykly pursat: üýtgeşmeleri aýratynlyk / goşma sözbaşy şahasyndan ussatlyga birleşdirmeli. Biz baş şahada, şonuň üçin etmeli zadymyz:
git merge feature/add-header
Emma test_resource.txt faýlyndaky gapma-garşylyk bilen netije alarys: ![Начало работы с Git: подробный гайд для новичков - 33](https://cdn.javarush.com/images/article/233f6738-b599-4f22-8552-2d39813d6dd8/800.jpeg)
![Начало работы с Git: подробный гайд для новичков - 34](https://cdn.javarush.com/images/article/efa04c3b-e279-4f6f-8f05-c3d2318d8ff2/800.jpeg)
- “<<<<<<< HEAD” bilen “=======” arasynda esasy bölümde şu setirde bolup geçen esasy üýtgeşmeler.
- “=======” bilen “>>>>>>> aýratynlyk / goşma sözbaşy” arasynda aýratynlyk / goşma sözbaşy bölüminde üýtgeşmeler bar.
![Начало работы с Git: подробный гайд для новичков - 35](https://cdn.javarush.com/images/article/c167e2b2-1cb1-4d19-862e-80ee06a7b6b4/800.jpeg)
git status
![Начало работы с Git: подробный гайд для новичков - 36](https://cdn.javarush.com/images/article/4416b14b-0e87-4877-b098-702624219f04/800.jpeg)
git add *.txt
![Начало работы с Git: подробный гайд для новичков - 37](https://cdn.javarush.com/images/article/99a41e85-fb52-429a-86c3-65ad32dd54aa/800.jpeg)
git commit
![Начало работы с Git: подробный гайд для новичков - 38](https://cdn.javarush.com/images/article/c07c9f20-993a-42ed-91d6-91fbf8f37646/800.jpeg)
Uzakdaky ammarlar bilen işlemek
Iň soňky ädim, uzakdaky ammar bilen işlemek üçin zerur bolan ýene birnäçe buýruga düşünmekdir. Öň hem aýdyşym ýaly, uzakdaky ammar ammaryň saklanýan we klonlap boljak ýeridir. Uzakdaky ammarlaryň haýsy görnüşleri bar? Birnäçe mysal bar:-
GitHub ammarlar we bilelikdäki ösüş üçin iň uly ammardyr. Öňki makalalarda düşündiripdim. Github hasabyma
ýazylyň . Köplenç işimiň dowamynda öwrenýän ýerlerimde işimi görkezýärin. -
GitLab açyk çeşmeli web esasly DevOps ömri sikli guraly bolup, öz wikisi bilen Git üçin kod ammary dolandyryş ulgamyny üpjün edýär, yzarlaýyş ulgamyny , CI / CD turbageçirijisini we beýleki aýratynlyklary berýär. Microsoft-yň GitHub-y satyn alandygy baradaky habardan soň, käbir döredijiler GitLab-daky işlerini köpeltdiler.
-
“BitBucket”, “Mercurial” we “Git” wersiýa dolandyryş ulgamyna esaslanýan taslamalary ýerleşdirmek we olaryň bilelikdäki ösüşi üçin web hyzmatydyr. Bir wagtlar GitHub-dan uly artykmaçlygy bardy, sebäbi mugt hususy ammarlary bardy. Geçen ýyl GitHub bu aýratynlygy hemmeler üçin mugt elýeterli etdi.
-
We ş.m.
git clone https://github.com/romankh3/git-demo
Indi ýerli derejede taslamanyň doly göçürmesi bar. Taslamanyň iň soňky göçürmesiniň ýerli ýerleşýändigine göz ýetirmek üçin maglumatlary ýazmak bilen taşlamaly:
git pull
![Начало работы с Git: подробный гайд для новичков - 39](https://cdn.javarush.com/images/article/782b84b1-e001-4849-be0b-c319133afca0/800.jpeg)
![Начало работы с Git: подробный гайд для новичков - 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”
Indi muny uzakdaky ammarlara iteklemek buýrugy:
git push
![Начало работы с Git: подробный гайд для новичков - 41](https://cdn.javarush.com/images/article/46c49cfa-afb0-4b3a-b95f-7506a199a189/800.jpeg)
peýdaly baglanyşyklar
- Git baradaky resmi resminama rus dilinde . Gollanma hökmünde maslahat berýärin.
- Git
GO TO FULL VERSION