i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ......

52

Transcript of i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ......

Page 1: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.
Page 2: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

1. Introduction2. VersiyonKontrolüneGiriş

i. VersiyonKontrolüNedir?ii. VersiyonKontrolüneNedenİhtiyacımızVar?iii. KısaGitTarihçesiiv. GitİleÇalışmayaBaşlamakv. BasitAnlamdaVersiyonKontrolüİşAkışıvi. Localbirprojeoluşturmakvii. Remotebirprojeoluşturmakviii. ProjemizÜzerindeÇalışmayaBaşlayalım

3. Branching(Dallanma)veMerging(Birleştirme)i. BranchingÇalışmaŞekliniziDeğiştirebilirii. Branch'lerİleÇalışmakiii. DeğişiklikleriniziGeçiciOlarakKaydetmek->GitStashiv. LocalBirBranch'deÇalışmakv. DeğişiklikleriMergeEtmekvi. BranchingİşAkışları

4. RemoteRepository'leri. RemoteBirRepository'yeBağlantıSağlamakii. RemoteRepository'dekiVerilerinİncelenmesiiii. RemoteDeğişiklikleriEntegreEtmekiv. LocalBirBranch'iYayınlamak(Publish)v. Branch'leriSilmek

5. İleriSeviyeKomutlarveİşlemleri. DeğişiklikleriniziGeriAlmakii. DiffİleFarklarıİncelemekiii. ÇakışmalarıGidermekiv. MergeAlternatifiOlarakRebaseKullanımı

6. GitAraçveServislerii. GörselGitİstemcileriii. Diff/MergeAraçlarıiii. GitServisleriiv. KaynakçaveReferanslar

TableofContents

Page 3: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Son4-5yıldayazılımgeliştiricilerinveyazılımşirketlerininvazgeçilmezaraçlarındanbiriolanvebenimdebiryazılımgeliştiriciolarakçokbaşarılıbulduğumGitDağıtıkVersiyonKontrolSistemini(DistributedVersionControlSystem)örneklerileelealaraksizetanıtmayaçalışacağım.

YazılımGeliştirmeileilgiliçoğukonudaolduğugibimaalesefGitileilgilikaynaklardaağırlıklıolarakİngilizce.TerminolojianlamındaTürkçebirkaynakhazırlamanınenbüyükzorluğuİngilizceterimlereTürkçeuygunkarşılıkbulmaktır.AncakGit101kitabındaİnglizce->Türkçegeçişinibirebiryapmayacağım,mümkünolduğukadarVersiyonKontrolüveGitileilgiliterimlerinİnglizcehallerinikullanmayaçalışacağım.

KonularındizilimindeveiçeriğinoluşturulmasındaLearnVersionControlwithGitisimlikitapçığınonlineversiyonubazalınmıştır.BelirtilenkaynaktakibaşlıklaraveiçeriğeilaveolarakdahaayrıntılıbirkitapolanProGitkitabındanvesonbölümdelinklerinipaylaştığımonlinediğerkaynaklardandafaydalanılmıştır.

ÖrneklerimiziTerminal(komutsatırıveyacommandlineolarakdatabiredilen)üzerindenAppleMacOSXişletimsistemikullanarakoluşturacağız.BukaynağınoluşturulduğuandabenimbilgisayarımdakiAppleMacOSXvegitversiyonlarıaşağıdakigibi

OSXversiyonu:10.9.4(Mavericks)Gitversiyonu:1.8.5.2(AppleGit-48)

Git,OSX'inyanısıratümLinuxdağıtımlarıveWindows'dadaçalışmaktadır.GitkomutlarıkullandığınızişletimsisteminegöredeğişmezancakGitkurulumukullandığınızişletimsisteminegöredeğişebilir.İşletimsisteminizebağlıolarakkurulumyönergeleriiçinaramamotorlarınıkullanarakgerekliadımlarıöğrenebilirsiniz.

TürkçeGit101

Önsöz

İngilizceTerimler

Örnekler

Page 4: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Bubölümdeaşağıdakikonularıelealacağız

VersiyonKontrolüNedirVersiyonKontrolüneNedenİhtiyacımızVarGitİleÇalışmayaBaşlamakBasitAnlamdaBirVersiyonKontrolüİşAkışıLocalBirProjeOluşturmakRemoteBirProjeOluşturmakProjemizÜzerindeÇalışmayaBaşlayalım

VersiyonKontrolüneGiriş

Page 5: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Versiyonkontrolünedirvebizinedenilgilendirmeli?Versiyonkontrolünübirdosyaveyabirkümedosyadakideğişiklikleritakipedebilmekiçinuyguladığımızbiryöntemolaraktanımlayabiliriz.Gitgibisistemlertümbudeğişikliklerintarihçesiniveiçeriğinielektronikolarakbizimiçintakipederekkayıtaltınaalmamızısağlayanveritabanlarıolarakdüşünülebilir.

Busistemlerikullanarakherhangibirandaüzerindeçalıştığınızdosyalarınoankihallerinikaydedebilir,dahasonradaistersenizbudosyalarınkaydedilmişvekontrolaltınaalınmışherhangibirhalinegeridönebilirsiniz.

Dosyalarınkayıtaltınaalınmışherhangibirandakihallerineversiyondiyoruz

Görsel:AtlassianGitWorkflowssayfasındanalıntı

Versiyonkontrolünü,kullandığınızprogramlamadili,yardımcıprogramlamakütüphaneleri(framework),dosyatipiveyaişletimsistemindenbağımsızbiryaklaşımolarakdüşünmelisiniz.Çünküversiyonkontrolü

HTMLdosyalariçinkullanılabileceğigibi,mimaritasarımamaçlıprojedosyalarıveiPhoneuygulamasıkaynakkodunuziçindekullanılabilir

Dosyalarınızüzerindeçalışırkenhangiişletimsisteminiveyahangiprogramlarıkullandığınızileilgilenmez(SublimeText,Notepad,VisualStudio,Word,AutoCAD)

BendebukitabınversiyonkontrolüiçinGitkullanıyorum

Versiyonkontrolsistemlerienbasitanlamdadosyalarınızdakideğişikliklerintarihçesinitakipedipkayıtaltındatutansistemlerdir.Bunedenleversiyonkontrolsistemleriniyedeklemeveyadiğeryazılımgeliştirmearaçlarıilekarşılaştırmakdoğruolmaz.

VersiyonKontrolüNedir?

Page 6: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Versiyonkontrolsistemikullanmanınbirçokfaydasıvarvebubölümdeversiyonkontrolsistemikullanımınınbizesağladığıavantajlardanbahsediyoruz.

Herhangibirversiyonkontrolsistemikullanmadığınızdaberaberçalıştığınızdiğerkişilerileaynıdosyalarüzerindeçalışabilmekiçinmuhtemelenherkesinerişimineaçıkpaylaşımlıbirklasörkullanmakzorundakalacaksınız.

Butürbirsenaryodakullanılanyazılımlarınçoğudeğiştirilendosyayakilitkoyarvebaşkabirisiaynıdosyayıdüzenlemekistediğinde

Kullandığıprogramabağlıolarakdosyayazmakorumalıolaraksaltokunurmodda(readonly)açılırveyaDeğişikliklerkaydedilmekistendiğindehataverir

Butürbirçalışmahemçokzahmetlihemdehatalaraaçıktır.Örneğinbirdosyanınensongeçerliversiyonununneredeolduğununtakipedilmesigibiçözümbulunmasıgerekensorunlarileuğraşmakzorundakalırsınız.

Üzerindeçalıştığınızdosyadasizdenöncebaşkasınındeğişiklikyapıpyapmadığındanhaberinizyoksahatalıiçeriküretmeihtimalinizvardır.

Versiyonkontrolsistemikullanıldığındaiseekibinizdekiherkesözgürbirşekildeistediğidosyalarüzerindegüvenlibirşekildeistediğideğişikliğiyapabilir.Herkesdeğişikliklerinitamamladıktansonradatümdeğişikliklerversiyonkontrolsistemikullanılaraksağlıklıbirşekildemerge(birleştirme)edilebilir.

Üzerindeçalıştığınızbirdosyanınveyabirdiziprojedosyasınınzamaniçindefarklıversiyonlarıoluşurvebuversiyonlarınkayıtaltınaalınmasıgerekir.Busorumlulukgeneldeçokzahmetlivesıkıcıbirişvesüreçtir.Aşağıdakinebenzersorularcanınızıgereğindenfazlasıkabilir

Sadecedeğişendosyalarmıyoksabirprojedekitümdosyalarınversiyonlarımıkaydedilmeli?

BirsürüdosyaiçindensadecedeğişendosyalarınbelirlenmesizordurHerseferindedosyalarınhepsinintekertekerkaydedilmesidurumundaiseihtiyaçduyulandandahafazladiskalanıkullanılır

Dosyalaraverilecekisimlertambirbaşağırısınadönüşebilir.

Personel_Maas.xlsxPersonel_Maas1.xlsxPersonel_Maas_Ozet.xlsxPersonel_Maas_BrutHaricDetay.xlsxşeklindedosyaisimleriüretmekzorundakalabilirsiniz.

Belkidecanınızıençoksıkacakşeyprojenizinikiversiyonuarasındatamolaraknetürfarklarınolduğunusağlıklıbirşekildebilmeşansınızolmamasıolacaktır

Versiyonkotrolsistemikullandığınızdasizinçalıştığınızdiskalanındaprojedosyalarınınsadecebirversiyonubulunur,budosyalarındahaöncekihalleriversiyonkontrolsisteminindenetimindedir.Busayedeistediğinizzamanöncekiversiyonlarageridönebilir,versiyonlararasındakifarklılıklarırahatlıklainceleyebilirveversiyonlarıkaydederkeneklediğinizilavebilgileriveyorumlarınızırahatlıklagörebilirsiniz.

VersiyonKontrolüneNedenİhtiyacımızVar?

Uyumluekipçalışması

Versiyonlarındüzgünbirşekildetakipedilebilmesi

ÖncekiVersiyonlaraGeriDönebilme

Page 7: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Dosyalarınızınveyaaslındatümprojenizindahaöncekiversiyonunageridönebilmeimkanınsizeciddianlamdaözgürlüksağlar;dosyalarınızıveprojeniziistediğinizgibideğiştirmeözgürlüğü.Yaptığınızdeğişikliklerprojeniziçöpedöndürdüyse,geliştirdiğinizbirişlevtamistediğinizgibiolmadıysaveyamüşterinizveyapatronunuzgeliştirdiğinizbirişleviartıkistemediğinekararverirseprojenizinöncekitemizhalineçokhızlıverahatbirşekildedönebilirsiniz.

Versiyonkontrolsistemlerideğişikliklerinizitamamlayıpcommitetmekistediğinizdecommentadıverilenaçıklamalargirmeniziisterler.Bucommentlersayesindeprojenizinherhangibirversiyonundakideğişikliklerinnedenlerinidekayıtaltınaalıpihtiyaçhalindegeridönüpinceleyebilirsiniz.

Git'decommitişlemiyapılırkencomment(yorummetni)girilmesizorunludur

Gitgibidağıtıkversiyonkontrol(DVCS)sistemlerininyanetkiolaraksağladığıfaydalardanbirisideyedeklemedir.Gitsayesindeaynıprojedeçalışanherkesinkendibilgisayarındaprojenintambirtarihçesitutulur.Merkeziversiyonkontrolsistemisunucusundabirsorunoluştuğundatakımdakiherhangibirininkendidiskindekiproje'yisunucuyageriyüklemesiyeterlidir.Diğerleridekendibilgisayarlarındakiprojedosylarınıgeriyüklenenprojedosyalarıilesenkronizeedebilirler.

Dosyalarınızınnedendeğiştiğinianlama

Yedekleme

Page 8: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Git2005yılında,baştaLinusTorvaldsolmaküzereLinuxçekirdeğinidekodlayanekiptarafındanLinuxkaynakkodunuversiyonkontrolüaltındatutmakvekendiişakışlarınıdüzenlemekiçingeliştirilmiştir

Linux'unkaynakkodu1991-2002yıllarıarasındakidönemdemanuelolarakdosyalarınpaylaşılmasışeklindeyönetiliyordu.2002yılındaLinuxgeliştiricilerinormaldeücretliolanancakaçıkkaynakprojeleriçinücretsizlisanslamamodelisunanBitKeeperisimlidağıtıkversiyonkontrolsisteminikullanmayabaşladılar.2005yılındaBitKeeper'ınücretsizsağladığılisansıgeriçekmesiüzerineLinusTorvaldsveLinuxekibikendidağıtıkversiyonkontrolsisteminigeliştirmeyekararverdiler.

LinuxekibiBitKeeperileolandeneyimlerinidedikkatealaraköncelikliolarakaşağıdakikriterlerisağlayankendiyazılımlarınıgeliştirmeyebaşladılar

HızlıKullanımıkolayLineerolmayangeliştirmeişakışınauygun(branching)TamamendağıtıkBüyükprojeleridestekleyebilecek

2005yılındanbugüneGitgelişmeyedevamediyor.Git'eyenieklenenözelliklererağmenGitbugünbileyukarıdabahsettiğimönceliklikriterlerdentavizvermedenmiliyolarcayazılımgeliştiricininhayatınıkolaylaştırmayadevamediyor.

KısaGitTarihçesi

Page 9: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Gitileçalışmakiçingit'inkendikomutsatırıarayüzünü(GitCommandLineInterface)veyagörselkullanıcıarayüzüolanmasaüstüuygulamalar(SourceTree,TortoiseGit,TowerveyaGitHub)kullanabilirsiniz.

GitileçalışırkengörselarayüzüolanbiruygulamakullanmanızüretkenliğiniziarttırıpGit'inçoksayıdakikarmaşıkkomutunadahahızlıvekolayerişmenizisağlar.DiğeryandanGit'inkomutsatırıarayüzünükullanmanızGitileilglidahaayrıntılıbilgilenmenizive3.partiuygulamalarabağımlıkalmadanGitileçalışabilmenizisağlar.

Gitkomutlarınıkomutsatırındaöğrendiktensonragünlükçalışmanızdagörselarayüzüolanbiruygulamayımutlakakullanmanızıöneriyorum.

Git'inkurulumuhemWindowshemdeMacOSXiçinoldukçakolaybirişlemdir.Herikiişletimsistemiiçintektıklakurulumyapmanızısağlayankurulumsihirbazlarıvardır.

İşletimsisteminizWindowsisegitileçalışmakiçin"msysgit"paketinikullanabilirsiniz.

msysgitpaketinikurmakiçinhttp://msysgit.github.io/adresindenkurulumuygulamasınıindiripçalıştırmalısınız.Kurulumadımlarısırasındakarşınızaçıkacakolanekranlardavarsayılanayarlarıseçiliolarakbırakarakkurulumunuzutamamlayabilirsiniz.

KurulumtamamlandıktansonraWindowsBaşlangıçmenüsündenGitklasörüaltındakiGitBashuygulamasınıçalıştırıpGit'inkomutsatırıarayüzünükullanmayabaşlayabilirsiniz.

Git'inkurulumununsorunsuzgerçekleştiğiniteyidetmekiçinGitBash'iaçıpgit--versionkomutunuyazın.BukomutekranaGit'inversiyonbilgisinibasar.Eğerhataalırsanızmsysgitanasayfasındansorunungiderilmesiiçinneyapmanızgerektiğiniöğrenebilirsiniz.

İşletimsisteminizMacOSXiseGitkurulumuiçinikiyöntemkullanabilirsiniz.

Apple'ingeliştiriciaraçlarınıkurarak(XCode)AppletarafındansağlananGitdağıtımınıkurabilirsinizGitOSXInstallerpaketiniindiripGit'ikurabilirsiniz.

GitkurulumunutamamladıktansonraApplicationsklasörüaltındakiTerminal.appuygulamasınıçalıştırın.

Spotlight'aterminalyazarakdaTerminal.appuygulamasınıbulupçalıştırabilirsiniz

Kurulumunuzudenetlemekiçinkomutsatırındagit--versionkomutunuçalıştırın.BukomutGit'inversiyonunuekranabasar.Herhangibirhataalmanızdurumundakurulumyönteminizegöreilgilikaynaklarıaraştırmanızgerekebilir.

Git'ikurduğumuzagöreartıkGitileçalışmakiçinbazıayarlaryapabiliriz.BuayarlariçinGitbizegitconfigisimlibiraraç/komutsunar.Gitayarlarınıbirdefayapmanızyeterliolacaktır.

Buayarlarıistediğinizzamandeğiştirebilirsiniz.

GitİleÇalışmayaBaşlamak

Komutsatırımıyoksagörselarayüzmü?

Kurulum

Windows

MacOSX

GitKonfigürasyonu

Page 10: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Gitayarlarınızaşağıdabelirtilenüçkonumdakaydedilirvehiyerarşikolarakbukonumlardanyüklenir

1. Seviye(/etc/gitconfigdosyası):Tümkullanıcıveprojeleriçingeçerliolanayarlarbudosyadakaydedilir.gitconfigkomutunu--systemseçeneğiileçalıştırırsanızayarlarbudosyadakaydedilecekvebudosyadanokunacaktır

2. Seviye(/.gitconfigdosyası):Sadecesizinkullanıcınıziçintanımlananayarlarınkaydedildiğidosyadır.gitconfigkomutunu--globalseçeneğiileçalıştırısanızayarlarbudosyayakaydedilecekvebudosyadanokunacaktır

3. Seviye:Projeklasörünüzün(projenizinGitileversiyonkontrolünealınmışolmasıgerekiyor)altındayeralan.git/configdosyasındaiseprojebazındakigitayarlarınızyeralır.

Git,ayarlarınızındeğerinibelirlemekiçinbuüçkonumdakidosyaları3.seviye,2.seviyeve1.seviyesıralamasıilehiyerarşikolarakokur.Belirlibirayar'ailişkindeğereilkhangiseviyederastlandıysaoseviyedekideğerdikkatealınırdiğerseviyelerdekideğerlerdikkatealınmaz.

Windows'daglobal(gitconfig--globalkomutu)gitayarlarınızWindows'un$HOMEklasörüaltındayeralan(genellikleC:\DocumentsandSettings$USER).configdosyasındayeralır.ProjeseviyesindekiayarlarınıziseOSX'deolduğugibi[ProjenizinAnaKlasörü].git\configdosyasındakayıtaltınaalınır.

Gitayarlarındanenönemliolanlarıkullanıcıadınızveemailadresinizdir.Git,ayarolaraktanımladığınızdeğerlericommitvbişlemlerdeotomatikolarakkullanır.Buayarlarındeğerinibelirlemekiçinkomutsatırındaaşağıdakikomutlarıçalıştırıyoruz

gitconfig--globaluser.name"aliözgür"

gitconfig--globaluser.email"[email protected]"

Yukarıdakikomutlarda

--globalseçeneğiileGit'eglobalayarlarıdüzenlediğinizisöylüyoruzuser.name(veuser.email)iledeğerinideğiştirmekistediğinizayarınanahtar'ınıbelirtiyoruzArdındandaçifttırnakiçindeilgiliayarındeğerinigiriyoruz

Buayarları--globalibaresiiletümprojelerinizdegeçerliolacakşekildeyaptık,projeseviyesindebuayarlarıyapmakiçinkomutsatırında(terminal'de)projenizinklasörünekonumlanıpgitconfiguser.name"aliözgür"komutuile--globalseçeneğinikullanmadanyapabilirsiniz.

Kendiyaptığımızveyakurulumilehazırgelenayarlarındeğerlerinigörmekiçinaşağıdakikomutlarıkullanabiliriz.

Globalseviyedetümayarlarılistelemekiçingitconfig--global-l

Globalseviyedetekbirayar'ındeğerini(örneğimizdeuser.nameanahtarınasahipayar)görmekiçinisegitconfig--globaluser.name

İPUCU

Git'inkomutlarıvebukomutlarınseçenekveparametreleriileilgiliyardımalmakistediğinizde

git[komutadı]--help(örneğin:gitinit--help)githelp[komutadı](örneğin:githelpinit)

komutlarınıkullanabilirsiniz.

Kullanıcıadınızıveemailbilgisi

Editörayarı

Page 11: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Git'inbazıkomutlarısizdeninteraktifolarakyorumveyabilgigirmeniziister.ButürdurumlariçinGit'inhangimetindüzenlemeuygulamasınıkullanacağınıayarlayabilirsiniz.GitvarsayılanolarakViveyaVim)kullanır.Ancakbueditörlerinkullanımıbaşlangıçseviyesindekikullanıcılariçinzorolabilir.Ben,ViveyaVimilekarşılaştırıldığındakullanımınındahakolayolduğunudüşündüğümGNUMidnightCommander(MC)kullanmanızıöneriyorum.

MidnightCommander'iMacOSX'eHomebrewkullanarak

brewinstallmidnight-commander

komutuilekurabilirsiniz.

MidnightCommanderveyaGit'idestekleyeneditörkurulumunutamamladıktansonra

gitconfig--globalcore.editormcedit

ileGit'inkullanacağıeditörayarınızıyapabilirsiniz.

Diffkavramınıilerleyenbölümlerimizdedahaayrıntılıelealacağız,ancakkısacadeğinmekgerekirse

BirdosyanınTxanındakiiçeriğiileTyanındakiiçeriğininarasındakifarklarıtespitetmevegöstermeişlemidir.İngilizcededifference(fark)kelimesininkısaltmasıolandiffşeklidekullanılır.

Buişlemigözileyapmakzorundakalmadandosyalarve/veyaklasörlerarasındakifarklarıtespitetmekvegörselleştirmekiçinkullanılanaraçlaragenelolarakDiffAraçlarıismiverilir.

Ben,MacOSXüzerindeücretsizbiruygulamaolanSourceGearDiffMergekullanmayıtercihediyorum.Git'indiffaracıolarakSourceGearDiffMerge'ikullanmasınısağlamakiçin

gitconfig--globalmerge.tooldiffmerge

komutuileayaryapabilirsiniz.DiffmMerge'inOSX'detamolarakayarlarınınnasılyapılacağınıöğrenmekiçinbulinktegözatabilirsiniz.

Windows'daiseyineücretsizbiruygulamaolanWinMergeveyaücretlibiruygulamaolanAraxisMerge'ikullanılabilir.BuaraçlarınGitayarlarınınnasılyapılacağınıyardımdokümanlarındanfaydalanaraköğrenebilirsiniz.

Diffaracıayarları

Page 12: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Git'inderinliklerinedalmadanöncegelinbasitbirversiyonkontrolişakışınaadımadımgözatalım.

Versiyonkontrolününentemelbileşenirepositorydenilenyapıdır.Repository,dosyalarınızdakitümdeğişikliklerivebudeğişikliklerileilgliilavebilgileri(değişikliğikim,nezamanyaptıvedeğişiklikileilgiligirilenaçıklamalar)ayrıbirerversiyonolarakkayıtaltındatutanbirvertabanıdır.Gittümbubilgilerigenellikledosyasistemindegizlibirklasörolarakoluşturulan.gitisimliklasöriçindebirdizidosyaolaraktutar.

Yukarıdabahsettiğimizrepository'yikendibilgisayarınızdaoluşturmakiçinikiyöntemkullanabilirsiniz.

Henüzversiyonkontrolüdeolmayanbirprojenizvarsa*gitinitkomutuileprojenizitümklasörvedosyalarıilebirlikteversiyonkontrolünealabilirsinizProjenizuzaktakiveyaşirketağınızdakibirGitsunucusundaversiyonkontrolüaltındatutuluyorsaprojeyikendibilgisayarınızagitclonekomutuileindirebilirsiniz.

Projeniziçinyukarıdakiyöntemlerdenbiriilerepositoryoluşturduktansonraaşağıdakibasitakışıkullanarakdeğişiklikleriniziyapmayabaşlayabilirsiniz

1. Projenizinrepositorysinioluşturduktansonradosyalarınızüzerindeistediğinizdeğişiklikleriistediğinizuygulamayıkullanarakyapabilirsiniz.Buaşamadayaptığınızdeğişiklikleriversiyonkontrolüiçinbirebirvedoğrudantakipetmenizegerekyoktur.

2. Yaptığınızdeğişiklikleristediğinizbirnoktayaulaştığındaveyabirözellikveyasorungidermedüzenlemesiileilgiliçalışmanıztamamlandığındaversiyonkontrolübakışaçısıiledeğişikliklerinizideğerlendirmenizgerekir.Buaşamadadeğişikliklerinizicommitadıverilenbirbütünüolaraktarifetmelisiniz.Böyleceprojenizinyenibirversiyonunuoluşturmaişlemininilkadımınıtamamlamışolacaksınız.

3. Fakat,commitişlemiöncesindedosyalarınızdayaptığınızdeğişikliklerinbirözetinigörmekisteyebilirsiniz.gitstatuskomutuilehangidosyalarıdeğiştirdiğinizi,sildiğiniziveyahangidosyalarıeklediğinizikolaycagörebilirsiniz.

4. Birsonrakiaşamadadeğişendosyalarınızdanhangilerinincommit'edahilolduğunubelirlemenizgerekiyor.Buadımdacommit'edahiletmekistediğinizdosyalarıstagingareadenilenarabiralanaalırız.

Dosyalarıniçeriğinindeğiştirilmişolması,silinmesiveyayenidosyaeklenmesibudosyalarınotomatikolarakstagingarea'yaeklenmesinisağlamaz.Buişlemiilgilidosyalarıseçereksizinyapmanızgerekir.

5. Dosyalarınızıstagingarea'yaeklediktensonraşimdicommitişleminehazırsınız.CommitişlemiiledosyalarınızdakideğişiklikleryenibirversiyonolarakGit'dekayıtaltınaalınır.

6. Zamanzaman,özellikledebirtakımçalışmasısözkonusuise,projenizdekideğişiklikleregözatmakisteyebilirsiniz.Projeniziçinoluşturduğunuzcommit'lerintarihçesiniincelemekiçingitlogkomutunukullanabilirsiniz.

7. Yaptığınızdeğişikliklerintakımıngerikalanıtarafındandagörülmesinivekullanılmayabaşlanmasınısağlamakiçindeğişikliklerinizizamanzamanuzaktakirepositorydeyayınlamanızgerekir.Bununiçingitpushkomutunukullanırız.

Local(Yerel)&Remote(Uzak)Repository'ler

Localrepository,kendibilgisyarınızdaprojeklasörünüzünaltındabulunan.gitklasörüdür.Burepositoryüzerindesadecesizçalışabilirsinizvedeğişiklikleryereldiskinizekaydedilir.Remoterepository'lerisegenellikleuzaktakibirsunucudayeralırlarvebusunucudaki.gitklasöründenibarettirler.Takımçalışmasısözkonusuisetakımdakikişilerdeğişikliklerinibuuzaktakirepositoryüzerindenpaylaşırlar.

BasitAnlamdaVersiyonKontrolüİşAkışı

Page 13: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Henüzversionkontrolüaltındaolmayanbirprojeniziversiyonkontrolüaltınaalmakiçingitinitkomutunukullanırız.BuişlemigerçekleştirmekiçinMacOSX'deTerminaluygulamasınıWindows'daiseGitBash'iaçarakaşağıdakikomutlarıçalıştırmanızgerekir

$cdproje/klasörünüzün/yolu/

$gitinit

Buişlemdensonra

ls-la

komutuileprojeklasörünüzaltındakidosyalarılistelediğinizdeklasörüniçinde.gitisimligizlibirklasörünolduğunugöreceksiniz.gitinitkomutuileprojemiziçinboşbirrepositoryoluşturduk.AncakprojeklasörümüzdedosyalarvebaşkaklasörlerbulunmasınarağmenbudosyaveklasörlerinhiçbirihenüzGittarafındanversiyonkontrolüaltınaalınmadı.

Workingcopy:ProjenizinanaklasörüneWorkingCopyveyaWorkingDirectoryismiverilir.Buklasördeprojenizdeyeralandosyalarınveklasörlerinbirkopyasıbulunur.VersiyonkontrolsistemineprojenizinherhangibirversiyonunuWorkingCopy'nizekopyalamasınısöyleyebilirsiniz,ancakbirandaWorkingCopy'nizdeprojenizinsadecebirversiyonuyeralır.

Tümgeliştirmeortamlarıveişletimsistemlerindekullandığımızaraçlartarafındanarabirürünolaraküretilenveaslındadoğrudanversiyonkontrolüaltınaalmakistemediğimizdosyaveyaklasörlerolacaktır.ÖrneğinMacOSX'inotomatikolarakürettiğigizliDS_StoreisimliklasörveyaC++derleyicileritarafındanüretilen.ouzantılıobjdosyalarıgibi.HangidosyalarınversiyonkontrolüaltındatutulacağınavehangileriningözardıedileceğineGitotomatikolarakkararvermez,bukararısizinvermenizgerekir.

KullandığınızgeliştirmearaçlarınabağlıolarakhangidosyalarıngözardıedilebileceğiileilgiliGitHub'inyayınladığıderlemeyegözatabilirsiniz.

Versiyonkontrolüaltınaalmakistemediğinizdosyaveklasörleritanımlamakiçinprojeklasörüneeklenen.gitignoredosyasıkullanılır.Budosya'yagözardıetmekistediğinizdosyaveklasörlerintespitedilebilmesiiçindoğrudanisimlerveyabasitkurallarekleriz.ProjeleriniziversiyonkontrolüaltınaaldıktansonrailkişolarakGitHub'inyayınladığıderlemeyiveyakendideneyiminizvebilginizilekararvereceğinizdosyaveklasörleri.gitignoredosyasınaekleyiniz.Projenizinilerleyenaşamalarındabuişlemiyapmanızbirazdahazahmetliolacaktır.

Şimdigelin.gitignoredosyasındakurallarınasıltanımlayabileceğimizebirgözatalım

*.[oa]

.~

İlksatırdaoveyaauzantısıilebitendosyalarınversiyonkontrolüdışındatutulmasıiçinbirkuraltanımlıyoruz.İkincisatırdaise~karakteriilebiten(çoğumetindüzenlemeuygulamasıgeçicidosyaları~ilebitendosyalarolarakotomatikoluşturur)dosyalarınversiyonkontrolüharicindetutmasıiçinkuraltanımlıyoruz.

.gitignoredosyasındatanımlamayaparkenaşağıdakikurallargeçerlidir

Boşsatırlarveya#ilebaşlayansatırlardayaptığınıztanımlamalarGittarafındandikkatealınmaz.*,?,[],{},[!]ve\gibikarakterlerkullanılarakoluşturulanveglobbingpatternsadıverilentanımlayıcılarkullanabilirsiniz

Localbirprojeoluşturmak

Versiyonkontrolüaltınaalmakistemediğimizdosyalar

Page 14: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Klasörleribelirtmekiçin/karekterikullanılır.Örneğin/projemde/versiyon/kontrolü/istemedigim/bir/klasor/şeklindebirtanımyaptığımızdailgiliklasörvealtındakitümdosyalarGittarafındangözardıedilir.Tanımladığınızbirkuralıntersini!simgesiiletanımlarız.Örneğin!/projemin/kaynak/kodu/şeklindebirtanımyaptığımızdabuklasördışındakitümklasörvedosyalarGittarafındangözardıedilecektir.

Projemiziversiyonkontrolünealıpgözardıedilmesiniistediğimizklasörvedosyalarıdabelirlediktensonraaşağıdakikomutlarileilkcommitişlemimiziyapabiliriz

$gitadd-A

$gitcommit-m"İlkcommitişlemimiziyaptık"

Bukomutlarınneişeyaradığınasonrakibölümlerdedeğineceğiz,şimdilik

İlkkomutuntümprojedosyalarınınStagingArea'yaeklenmesiiçin,İkincikomutunisedosyalarımızınbiraçıklamailecommitedilmesiiçinkullanıldığınısöylemekileyetinelim.

Yukarıdakiikikomut'uarkaarkayakullanmakyerineaynıişlemigitcommit-akomutuiledeyapabiliriz.

İlkcommitimiz

Page 15: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

VersiyonkontrolüGitileyapılanbirprojedeyeralıyorsanızremoterepository'lerinizinasılyöneteceğinizideöğrenmenizgerekir.Remoterepository'leriprojeleriniziinternet'deveyasınırlıerişimeizinverilenşirketağındayeralanversiyonlarıolarakdüşünebilirsiniz.

Diğerekipüyeleriilebirlikteverimliçalışabilmek,onlarınyaptığıdeğişikliklerikendiyerelçalışmaalanınızaalmak,kendiyaptığınızdeğişikliklerionlarilepaylaşabilmekiçinremoterepository'lerinizidoğruveetkinbirşekildeyönetmelisiniz.

GitileversiyonkontrolüyapılanbirprojeyedahilolduğunuzdasizeverilecekilkbilgilerprojeninGitadresi(URL)veprojeyeerişimiçinkullanacağınızkullanıcıadıveşifrenizdir.Uzaktakibirrepository'nin(URL)adresiaşağıdakiformatlardanbirindeolacaktır

ssh://user@server/git-repo.gitkullanıcıadı@sunucuadı:git-repo.githttp://example.com/git-repo.githttps://example.com/git-repo.gitgit://example.com/git-repo.git

BuadresformatlarındanilkikitanesiSSH(SecureShell)protokolünekarşılıkgelir.http://vehttps://protokolleriisenormalinterneterişimiiçindekullanılanprotokollerdir.Sonformatisegit'inkendiprotokolünekarşılıkgelir.

Remoterepository'nizinadresiniveerişimiçingereklikullanıcıadınızıveşifreniziöğrendiktensonrayapmanızgerkentekşeybuadrestenprojenizindosyalarınıyereldiskinizeklonlmak.BununiçinöncelikleyereldiskinizdeprojeniziindireceğinizbirklasöroluşturmanızveTerminal'denbuklasöregitemenizgerekiyor.SırasıylaaşağıdakikomutlarıTerminal'deyazınız

YukarıdakiekrangörüntüsündeyeralanilkcdkomutuileprojeklasörümüniçindeyeralacağıanaklasörolanProjectsklasörünekonumlanıyoruz.İkincikomutolanmkdirileprojeklasörümüzolangit101_kitapklasörünüoluşturuyoruz.Üçüncükomutumuziledeyenioluşturduğumuzgit101_kitapklasörünekonumlanıyoruz.

Yereldiskimizdeboşprojeklasörümüzüoluştruduğumuzagöreşimdiremoterepository'miziyerelklasörümüzegitclonekomutuileindirebiliriz.

Kullanıcıadınızıveşifrenizivererekremoterepository'yiklonlamakiçinaşağıdakigitclonekomutunabubilgileriaşağıdakiformattavermenizgerekiyor

gitclonehttps://kullanıcıadı:ş[email protected]/username/repository.git

Remotebirprojeoluşturmak

Page 16: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Üzerindeçalışacağımızprojenindosyalarıartıkyereldiskimizdeyeraldığınagöreprojemizileilgilinormalçalışmamızabaşlayabiliriz.

Projeniziisterlocalbirprojeolarakoluşturmuşolunistersenizremotebirrepository'yiklonlamışoluntümdeğişikliklerinizyereldiskinizdegerçekleşecekvecommitlerinizileoluşturacağınıztümversiyonlargittarafındanyereldiskinizdeki.gitklasöründetakipedilecektir.İlerleyenbölümlerdeayrıntılıolarakelealacağımızgitpushkomutunuçalıştırmadığınızsüreceyaptığınızdeğişikliklersadeceyereldiskinizdekayıtaltınaalınır.

Git'dedosyalarınızgenelolarakikidurumdaolabilir

Untracked(TakipEdilmeyen):Budosyalarversiyonkontrolüaltındaolmayanveyasizinhenüzversiyonkontrolüyapmakiçingit'eeklemediğinizdosyalardır.Budosyalardakideğişikliklersizdosyalarıgit'eeklemediğinizsüreceversiyonkontrolünetabideğildirTracked(TakipEdilen):Budosyalarisegit'inversiyonkontrolütakibialtındaolandosyalardır.Budosyalarüzerindeyapacağınıztümdeğişikliklergittarafındantakipedilmektedir.

Çoğuversiyonkontrolsistemindedeğişikliklerinizikiyerdekaydedilir

Yereldiskinizdekiçalışmaklasörünüz(workingfolder)veyaVersiyonkontrolsistemininveritabanı

Ancakgit'dedeğişikliklerinizinkayıtaltınaalındığıüçüncübiralandahavardırkibunaStagingAreadenirvegit'inentemelkavramlarındanbirisidir.StagingArea'yı,projedosyalarımızdakibirdizideğişikliğiremoterepository'yegöndermedenöncekayıtaltındatuttuğunuzveritabanı/alanolaraktanımlayabiliriz.

VersyonKontrolününAltınKuralları

#1SadeceBirbiriİleAlakalıDeğişiklikleriCommitEdin

Değişikliklerinizicommitetmeyekararverdiğinizdebirbiriilealakalıdeğişiklikleritekbircommitolarakelealmayaözengösterin.Birbiriilealakalıolmayandeğişiklikleriaynıcommitileversiyonkontrolsistemindekayıtaltınaaldığınızdaaşağıdakilerebenzersorunlaryaşamaihtimalinizartacaktır

Commitinizdekideğişiklikleriinceleyenekiparkadaşlarınızyaptığınızdeğişikliklerdenhangisininhangikonuileilgiliolduğunuanlamaktagüçülükçekeceklerdir.Alakalıalakasızdeğişikliklertekbircommitiçindeyeraldığıiçinherhangibirnedenlebelirlivetekbirdeğişikliğigerialmaktagüçülükçekeceksiniz.

Alakalıalakasızdeğişiklikleritekbircommitileelealmakyerineörneğinikiayrısorunugidermekiçinyaptığınızdeğişikliklerikiayrıcommitilekayıtaltınaalınmalıveyadahabüyükbirözelliküzerindeçalışırkenbuözelliğioluşturanveanlamsalbirbütünolarakifadeedilendahaküçüközelliklerideayrıcommitlerilekayıtaltınaalmalısınız.

Projenizüzerindeçalışırkenbelirlibirzamanaralığındayaptığınızdeğişikliklerintamamınınaynıkonuveyaözellikleilgiliolmasımümkünolmayacaktır.TamdabunoktadaStagingAreamekanizmasınıngüzelliğiortayaçıkar,çünkügithangideğişikliğinizinStagingArea'yagideceğinekararvermeniziçinsizindevreyegirmeniziister.Dahaöncedebelirttiğimizgibiyaptığınızdeğişikliklergittarafındanotomatiktakipedilmez,bununyerinegittümdeğişikliklerisizingözdengeçirerekkontrollübirşekildeStagingArea'yaalmanızıister.

ProjemizÜzerindeÇalışmayaBaşlayalım

DosyaDurumları

StagingArea

Page 17: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Soncommitişleminizdensonraprojedosyalarınızdayaptığınızdeğişikliklerilistelemekiçingitstatuskomutunukullanabilirsiniz.

Yukarıdakiterminalekrangörüntüsündedegörebileceğinizgibigitoldukçaayrıntılıdurumbilgisisunmaktadır.gitstatuskomutuilegitaşağıdaki3anagruptayeralandosyalarısizelisteler

Changestobecommitted(Commitedilmeyehazırdosyalar):BugruptakidosyalargitaddveyagitrmkomutuileStagingArea'yaeklediğimizdosyalardır.Budosyalarbirsonrakicommit'imiziniçindeyeralacaktırChangesnotstagedforcommit(Commitiçinhenüzhazırolmayandosyalar):BugruptakidosyalardeğişiklikyaptığımızfakathenüzStagingArea'yaeklemediğimzidosyalardır.Budosyalarbiröncekigrubuniçineeklemediğimizsürecebirsonrakicommit'edahilolmayacaklarıdırUtrackedfiles(Versiyontakbinideolmayandosyalar):Bugruptakidosyalarisehenüzversiyonkontrolüaltınaalmadığımızdosyalardır.

Biröncelkibaşlıktadeğindiğimizvegitstatuskomutusonrasındagit'inbizeözetlediği3gruptansonikisindeyeralandosyalarınilkgrubadahiledilmesiiçingitaddvegitrmkomutlarınıkullanabiliriz.

Aşağıdaoluşturduğumuzgitaddkomutuilebaslik_2.mdvebaslik_2_1.mddosyalarıileresimlerklasörüaştındakitümdosyalarınStagingArea'yaeklenmesinisağlayabiliriz.

$gitaddbaslik_2.mdbaslik_2_1.mdresimler/*

Benzerşekildeaşağıdakigitrmkomutuileornek2.mddosyasınınbirsonrakicommitimiz'deyeralmayacağınıbelirtebiliriz.

$gitrmornek2.md

DeğişikliklerinizigitaddvegitrmileStagingArea'yaaldıktansonragitcommitkomutuileyenibirversiyonolarakkayıtaltınaalabilirsiniz.

$gitcommit-m"1.7numaralıaltbaşlıkiçeriğitamamlandı"

Yukarıdakikomuttayeralan-mparametresiileyaptığınızdeğişiklikleriözetleyenbirmesajıdacommit'inizeekleyebilirsiniz.

YaptığınızDeğişiklikleriListelemek

"gitadd"ve"gitrm"komutları

DeğişikliklerimiziCommitEdelim

Page 18: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Eğerbirdenfazlasatırıolanbircommitmesajıgireceksiniz-mparametresinikaldırmanızyeterliolacaktır.Budurumda1.3numaralıbölümdeayarladığınızeditöraçılırvebueditör'emesajınızıistediğimizuzunluktagirebilirsiniz.

VersyonKontrolününAltınKuralları

#2AnlamlıCommitMesajları

Commitişlemisırasındayazacağınızbilgilendiricibirmesajhemekibinizdekidiğerkişilerinhemdedahasonrakendinzinyapılandeğişikliğidaharahatvehızlıanlamanızısağlayacaktır.Mesajınızakısabirözetsatırıyazdıktansonrabirsonrakisatırdadadeğişikliğinnedeniveiçeriğihakkındabilgiverebilirsiniz.

1. Commit'inizdesadecekavramsalolarakilişkilideğişiklikleriiçermeyeözengöstermelisiniz.Zamanzamanikifarklıkonuveyasorunileilgiliaynıandaveyaçokkısaaralıklarladeğişimliolarakçalışmakzorundakalabilirsiniz.Buşekildeyapılanbirçalışmasonrasındacommitzamanıgeldiğindemümküniseikikonuileilgilideğişikliklerinizibirdefadacommitetmekyerineikidefadaayrıayrıcommitedin.Buçokzoroluyorsakısayoldanbirandatekbirdeğişikliğeodaklanmayıdadüşünebilirsiniz.

2. Tamamlanmamışdeğişikliklerinizikesinliklecommitetmemeyeözengösterin.EğerzamanzamandeğişikliklerinizikayıtaltınaalmakisytiyorsanızcommitişlemiyerineGit'inStashözelliğini/komutunukullanabilirsiniz.

3. Testedilmemişdeğişikliklericommitetmemeyeözengösterin.Buöneriaslındabiröncekiönerimizilepratikteaynıanlamageliyor

4. Commit'lerinizkısaveaçıklayıcımesajlariçermeli.5. Sonolarakdasıksıkcommitişlemiyapmayıalışkanlıkhalinegetirmeniziönerebiliriz.Bualışkanlıkilebirlikte

yukarıdakimaddelerideyerinegetirebilirsenizişyapmaşeklinizvekonsantrasyonunuzdaolumluyöndeetkilenecektir.

Gitprojenizüzerindeçalıştığınızherandayaptığınızcommitişlemlerinikayıtaltınaalmaktadır.Özellikleekipçalışmasısözkonusuisecommitişlemleriileilgiligittarafındankayıtaltınaalınanbubilgilerdahadaönemkazanmaktadır.

Git'incommitlerinizileilgilikayıtaltınaaldığıtarihselbilgilerigörmekiçingitlogkomutunukullanıyoruz.BUkomuttümcommitlerileilgilibilgileri,ensoncommitenüstteolacakşekilde,tarihselolaraksıralar.EğerTerminalpencerenizesığımayacakkadarçoktarihselkayıtvarisesonsatırda:simgesiyeralacaktır,klavyenizdenSPACE/BOŞLUKtuşunabasarakbirsonrakisayfanınlistelenmesiniqtuşunabasarakdalistelemeninsonlandırılmasınısağlayabilirsiniz.

İyiBirCommitNasılOlmalı?

CommitTarihçesi

Page 19: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Terminal'delistelenenhercommittarihçesikaydı,diğerbilgilerinyanısıra,aşağıdakitemelbilgileriiçerir

Commit'inHashdeğeriCommit'igerçekleştirenkişininadıveemail'iCommittarihiCommitmesajı

CommitHash:Herbircommit'inbenzersizvetekbirtanımlayıcıdeğerivardır.Budeğergittarafındancommit'edahilolantümdeğişikliklerinizvecommit'inkendisiileilgilibilgilerdekullanılarakotomatikhesaplanır.Genelolarakgit'inlistelemelerindevebazıkomutlarınparametresiolarakbudeğerinilk7karakterininkullanılmasıyeterlidir.Çünkübuilk7karakterindenerdeysebenzersizvetekilolduğunusöyleyebiliriz.

gitlogkomutuilebirliktecommitişlemiileilgilibilgilendiriciçoğubilgiyigörmeklebirlikteparametreolarak-pdeğerinikullanırsanızdosyalardayapılandeğişikliklerdeayrıntılıolaraklsitelenecektir.

Page 20: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Kitabımızınilerleyenbölümlerindegitlog-pkomutuilegördüğümüzbilgilerinasılyorumlayacağımızıayrıntılıolarakelealacağız.

Page 21: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Bubölümümüzdeaşağıdakikonularıelealacağız

BranchingÇalışmaŞekliniziDeğiştirebilirBranch'lerİleÇalışmakDeğişiklikleriniziGeçiciOlarakKaydetmek->GitStashBasitBirBranchingAkışıDeğişiklikleriMergeEtmekFarklıBranchingİşAkışları

Branching(Dallanma)veMerging(Birleştirme)

Page 22: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Bazıaraçlarınsağladığıimkanlargünlükişyapmaşeklimiziçokderindenetkileyip,yaptığımızişedahafarklıbakabilmemizisağlar.Git'inbranchingyaklaşımı(Türkçe'yedallanmaolarakdaçeviebiliriz)dabahsettiğimbudönüştürücüetkiyesahiparaçlardanbirisidir.Branchingkonusundakihakimiyetimizinartmasıvesağlamlaşmasıilebirliktedahafarklıişyapmayabaşlayıpdahaiyibireryazılımgeliştiriciolabilirsiniz.

BranchingdenilenyöntemaslındaGitdışındakidiğerversiyonkontrolsistemlerindedeötedenberikullanılmaktaveyazılımgeliştiricilerinhayatınıönemliderecedekolaylaştırmaktadır.Ancak,Git'dekibranchingyaklaşımıkullanımkolaylığıveyüksekperformansınedeniylekendindehasolduğunudasöylemeliyiz.

Öyleysegelinşimdiyavaşyavaşbranching'in(dallanma)neolduğunuanlayalım.

Dahaöncekibölüm'ünsonaltbaşlığında(gitcommit)zamanzamanbireyselolarakkısazamandilimlerindeaynıprojeninfarklıözellikleriileilgilideğişiklikleryapılmasıgerekebileceğindenbahsetmiştik.Büyükprojelerdeisebudurumkişiselbirterciholmaktançıkıpişbölümü/uzmanlıkgibikriterlerebağlıolarakproje/ürünyönetimininönemlibirparçasıhalindeelealınır.Örneğin5kişilikbirekibinherbirüyesiaynıyazılımınfarklıözellikleriileilgiliçalışabilirveyaikifarklıkişiaynıözelliğinfarklışekillerdenasılgeliştirilebileceğiileilgilideneyselçalışmayapıyorolabilirler.Bahsettiğimtümbualternatifsenaryolaraslındakendiyaşamdöngüleriolabilen,çoğuzamankısaveyauzunsürelieşzamanlıilerleyenfarklıbirerbağlamadenkgelir.

Pratikteüzerindeçalıştığınızprojenin/yazılımınherzamansonstabildurumuyansıtananabirbağlamıveXnumaralıhatabildiriminindüzeltilmesi,yenibirYözelliğiüzeirndeyapılançalışmaveyadeneyselbirözellikileilgiliyapılançalışmagibibirdenfazlayanbağlamıolacaktır.

Netolarakbirbirindenayrılmışfarklıbağlamlaroluşturmakiçinbranchingbenzeriaraçlarolmasaydıaşağıdakilerebenzersenaryolardanasıldavranacağımızkonusundasıkıntılaryaşayacaktık

Örneğinmüşterinizveyayöneticinizikialtermatifsayfatasarımındanbirincisinideğildeikincisinibeğendivebuaradasizdesayfatasarımıdışındabirkaçtanebugfixvebirkaçtanededokümantasyondeğişikliğinifarklızamanlardatamamladınız.Budurumdamüşterinizinbeğendiğiikincitasarımıdiğertümdüzenlemelerikaybetmedennasıldevreyealacaktınız?ÜzerindeçalıştığınızalışverişsitesiiçinözelolarakgeliştirdiğinizSepetmodülüyerine3.partibirmodülkullanılmasıkararıalındıvesizindekendimodülünüzüanayazılımdansökmenizistendi.Budurumdasökmenizgerekenmodülkodunutespitedipdiğermodüllerietkilemedennasılsökecektiniz?YenigeliştirdiğinizBeniHaberdarEtişleviyazılımınızıngerikalanözelliklerininbirçoğunundeğiştirilmesinesebepolmuşkenbirdenBeniHaberdarEtişlevininsaçmavegereksizolduğunakararverilseydibuişleviaradangeçenzamandayazılımınfarklıyerlerindeyapılandiğerdeğişikliklerdenizoleedereknasılçöpatacaktınız?

Birdenfazlakonuileilgilideğişikliklerintamamınıtekbirbağlamileyönetmeyeçalışırsanızişlerhızlasarpasaracaktır.Bukarmaşanınönünegeçmekiçinherbirdeğişiklikiçinprojenizintamamınınfarklıklasörlerekopyalamayıdeneyebilirsiniz.Ancakbudurumda

BuklasörlerversiyonkontrolündeolmadığıiçinekibingerikalanıileişbirliğiyapmanızçokzorlaşacakFarklıdeğişikliklerientegreetmekçokzorvehatayaaçıkbirişlemolacak

Uzunlafınkısasıprojenizdekideğişiklikleriprofesyonelbiryaklaşımlaelealmakistiyorsanızfarklıbağlamlardaçalışmakvebubağlamlarıdüzgünyönetmekiçinbiryolbulmanızgerekiyor.

BranchingÇalışmaŞekliniziDeğiştirebilir

BirdenFazlaBağlamdaÇalışmak

Branchingolmasadaolurmu?

Page 23: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Branchingbiröncekibölümdedeğindiğimiztümsorunlarınönünegeçmekiçinkullanabileceğimizbiraraçveyaklaşımdır.Branchingilefarklıbağlamlarıbirbirindekolaycaizoleederekherbirinikolaycaveayrıayrıyönetebilirsiniz.

Görsel:AtlassianGitWorkflowssayfasındanalıntı

Herhangibirandayaptığınızdeğişikliklersadeceaktifolaraküzerindeçalıştığınızbranch'e(dal)yansıyacakdiğerbranchlerbudeğişikliklerdenetkilenmeyecektir.Böyleceaynıandabirdenfazlabranchüzerindeözgürceçalışabilirsinizveenönemlisidebuçalışmalarınızdanbirkısmınınçöpedönmesindençekinmedendenemeleriniziyapabilirsiniz.

VersyonKontrolününAltınKuralları

#3Branch'leriBolBolKullanın

Branchlergit'inengüçlüözelliklerindenbirisidir.Hızlıvekullanımıkolaybranchingmekanizmasıgit'intasarımındailkgünündenitibarenciddibirgereksinimolarakelealınmıştır.Branch'lerfarklıbağlamlardaçalışmaktankaynaklanabilecekkarmaşanınönünegeçmekiçinbiçilmişkaftandır.Branch'leribugfix'ler,yeniözelliklerüzerindeçalışmakveyadeneyselözelliklerigeliştirmekiçinbolbolkullanın

Neysekibranchingvar

Page 24: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Git'debranchkullanımıtercihebağlıdeğildir,aslındafarkındaolmasanızbileprojenizüzerindeçalışırkenherzamanaktiftekbirbranchüzerindeçalışırsınız.Git'deprojeniziilkoluşturduğunuzdaGitvarsayılanolaraksiziniçinmasteradıveilenbirbrancholuştururvesizbubranchüzerindeçalışmayabaşlarsınız.

Gelinşimdigitbranchkomutununbasitkullanımıileilgilibirkaçörnekgörelim.

gitbranchdenemekomutunuçalıştırdığınızdagitsiziniçinprojenizdekidosyalarınoankihalinibarındırandenemeisimlibirbrancholuşturur.

Gitgitbranchkomutuileoluşturduğunuzyenibranch'iotomatikolarakaktifhalegetirmez.

Branch'inizioluşturduktansonragitbranchkomutunuçalıştırdığınızdagitsizeprojeniziçinoluşturduğunuztümbranch'lerilistelerveaktifolanbranch'ibaşınada*simgesiolacakşekildegösterir.

gitstatuskomutunuçalıştırdığınızdadaaktifolanbranch"Onbranch...."ifadesiilegösterilir

Branch'lerinizileilgilidahafazlaayrıntıgörmekiçinisegitbranchkomutunu-vparametresiileçalıştırabilirsiniz.

Yenioluşturduğumuzbranchileçalışmayabaşlamadanöncegelinbirdefadahagitstatuskomutuileprojemizinnedurumdaolduğunabakalım.

Yukarıdakiekrangörüntüsündedegördüğümüzüzereaktifolanmasterbranch'imizdedosya2.mdisimlidosyamızdahenüzcommitetmediğinizbirdeğişiklikvar.Budosyadakideğişikliğinyenieklediğimizbranch'deyeralmasınıistemediğimizivehenüztamanlamıylabitirilmediğinivarsayalım.Budurumdadosyadakideğişikliğicommitmietmeliyizyoksatamamengöz

Branch'lerİleÇalışmak

Page 25: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

ardımıetmeliyiz?

VersyonKontrolününAltınKuralları

#4YarımYamalakDeğişiklikleriAslaCommitetmeyin

Tamanlamıylabitirmediğinizvetestetmediğinizbirdeğişikliğiaslacommitetmeyin.Üzerindeçalışacağınızdeğişiklikleriplanlarkenbudeğişikliklerimümkünolduğuncaküçükparçalarhalindeelealmayaözengösterirsenizyağtığınızdeğişikliklerikayıtaltınaalmakiçinhenüztamamlanmamışdeğişikliklericommitetmekzorundakalmazsınız.BunarağmenarasafhadakayıtaltınaalmakistediğinizdeğişiklikerolursaGit'inStashözelliğinikullanabilirsiniz.

Page 26: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Commitişlemiiledosyalarınızdayaptığınızdeğişikliklerkalıcıolarakrepository'dekayıtaltınaalınır.Ancakgünlükçalışmamızdabazentamolarakbitmeyendeğişiklikleridekayıtaltınaalmakisteyebiliriz.Örneğinbirdeğişikliküzerindeçalışırkenbaşkabirkonuileilgilikritikbirsorunbildirildiğindeyapmaktaolduğumuzişiyarımbırakıpyenisorunaodaklanmakzorundakalabilirsiniz.

Bugibidurumlardayenisorunileilgilienmeyebaşlamakiçinöncekideğişikliklerinizikaybetmedenyenivetemizbirbrancholuşturmalısınız.Yarımkalandeğişikliklerikayıtaltınaalmakiçingitstashkomutunukullanmalısınız.

gitstashileüzerindeçalıştığınızancakhenüzcommitetmediğinizdeğişiklikleringeçiciolarakGittarafındankayıtaltınaalınmasınıveaktifbranch'inizinherhangibirdeğişikliğinolmadığıtemizbirdurumagetirilmesinisağlarsınız.gitstashkomutunuçalıştırdıktansonratekrargitstatuskomutunuçalıştırırsanızöncekibölümüdecommitedilmemişbirdeğişiklikolarakgörünendosya2.mddosyasındakideğişiklikartıklistelenmezçünkümasterbranchimizgitstashsonrasıtemizbirdurumageldi.

gitstashlistkomutunukullanarakaktifbranch'inizdegeçiciolarakkayıtaltınaaldığınızdeğişikliklerinlistelenmesinisağlayabilirsiniz.

Yukarıdagörünenlsitedeensonstashişlemiilegeçiciolarakkaydedilendeğişikliklerenüstteyeralır.Stash'deyeralanbirdeğişikliğigeriyüklemekistediğinizdeikiseçeneğinizvar

gitstashpopkomutuileyukarıdakilisteninenüstündeyeralandeğişiklikgeriyüklenecekvebudeğişikliklistedensilinecek.

DeğişiklikleriniziGeçiciOlarakKaydetmek->GitStash

Page 27: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

gitstashapplykomutuileistediğinizdeğişikliğigeriyükleyebilirsiniz.Ancakbuişlemsonrasındayüklediğinizdeğişikliklistedensilinmeyecek.

Herhangibirdeğişikliğilistedensilmekiçingitstashdropkomutunukullanabilirsiniz.

Stashişleminiüzerindeçalıştığımızaktifbranch'imizitemizbirdurumagetirmekiçinkullanabiliriz.BunundışındaaşağıdakidurumlardadaGit'inStashözelliğinikullanabilirsiniz

Farklıbirbranch'iaktifhalegetirmedenönceRemoteRepositorydeğişiklikleriniziyereldiskinizeindirmedenönceBranch'inizimergeetmedenönce

StashBaşkaHangiDurumlardaKullanılabilir?

Page 28: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Gelinşimdihepbirliktegünlükçalışmanızsırasındakullanabileceğinizbasitbirbranchingakışınıelealalım.Çalışmasenaryomuzunşöylegeliştiğinidüşünelim

1. Birwebsitesiüzerindeçalışmayabaşladınız2. Busiteyeyenibirözellikeklemekiçinbirbrancholuşturdunuz3. Buyenibranchüzerindendeğişiklikleriniziyapmayabaşladınız

Busıradawebsitesindebirgüvenlikaçığıtespitedildiğinibildirenbiremailaldınız.Acilolarakbugüvenlikaçığınıgidermeniziçinyapmaktaolduğunuzçalışmayıbırakmanızvebudurumudüzeltmenizgerekiyor.Böylebirdurumdaaşağıdakiadımlarıtakipedebilirsiniz

1. Aktifbranch'iniziwebsitenizinsonstabilversiyonunbulunduğumasterbrancholarakdeğiştirdiniz

gitcheckoutmasterkomutunukullandık

2. Güvenlikaçığınıgidermeçalışmanıziçinyenibirbrancholuşturdunuz.

gitbranchloginsorunukoutunukullanarakbrancholuşturdukvegitcheckoutloginsorunukomutuilebubranch'iaktif>halegetirdik

3. Güvenlikaçığınıgiderecekdeğişikliğitamamladınız,testleriniziyaptınızvebudeğişikliğiStagingArea'yaekleyipsonrasındadacommitettiniz

gitaddlogin.xyzlogin.htmllogin.cssiledeğişiklikleriStagingArea'yagönderdikgitcommit-m"Özelkarakteriçerenkullanıcıadlarındaortayaçıkangüvenliksorunugiderildi"iledeğişikliklerimizicommitettik.

4. masterbranchimiziaktifhalegetirdik

gitcheckoutmasterkomutuile

5. Commitettiğinizdeğişikliğiwebsitenizinstabilversiyonunuiçierenmasterbranchimizemergeettik.

gitmergeloginsorunu

6. Dahaönceüstündeçalışmaktaolduğunuzyeniözellikileilgilideğişiklikleriiçerenbranch'iniziaktifhalegetirerekçalışmanızakaldığınızyerdendevamedebilirsiniz.

gitcheckoutyeniozellik_xyzkomutuile

Git'debirbranchotomatikolarakobranchiçinyaptığınızsoncommitişleminebirişaretçitutarvehangidosyalarınobranch'eaitolduğunubilir.Herhangibirandabirprojeiçintekbirbranchaktifolabilir.Bubranch'eHEADdenirveWorkingCopyiçindeki(WorkingCopy'yiprojenizinyereldiskinizdekidosyalarınıntamamıolarakdüşünebilirsiniz)dosyalaraktifolanbranch'eyaniHEAD'eaittir.DiğerbranchlerinizdekidosyalardisikinizüzerindedeğilGit'inveritabanında(.gitklasörüiçinözelbirformatta)bulunur.

Farklıbirbranch'iaktifhalegetirmekiçingitcheckoutkomutukullanılır.BudurumdaGitotomatikolaraksiziniçinikişeyyapar

1. Aktifhalegetirdiğinizbranch'iHEADyaparve2. Aktifhalegetirdiğinizbranch'eaitdosyalarıGitveritabanınızdanyereldiskinizekopyalarveöncekibranch'eait

dosyalarıdiskinizdenkaldırır.YaniWorkingCopy'nizeyenibranch'eaitolandosyalarıkoyar.

BasitBirBranchingAkışı

Checkout,HEADveWorkingCopykavramları

Page 29: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.
Page 30: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Projemizdeyaptığımızfarklıkonularvebağlamlardakideğişiklikleritakipetmekbiröncekibölümdeanlattığımızbasitişakışıilegünlükçalışmamızdabizeciddikolaylıklarveesnekliklersunmaktadır.Ancakbranch'lerimizüzerindedeğişikliklerimizitamamlayıpStagingveCommitişlermlerimiziyaptıktansonratümbudeğişiklikleriprojemizinstabilversiyonuolanmasterbranchilemergeetmemizgerekiyor(branch->[merge]->master).Mergingenbasitanlamdaherhangibirbrach'deyaptığımızdeğişikliklerimasterbranch'imizilebirleştirmeveyamasterbranch'eentegreetmeişlemidir.

Birbranch'dekideğişikliklerinizisadecemasterbranchinizilemergeetmekzorundadeğilsiniz.KullandığınızGitçalışmapratiğinebağlıolarakherhangibirbranch'ibaşkabirbranch'emergeedebilirsiniz.

Değişikliklerinizimasterbranchinizemergeetmekdurumlardansadecebirtanesidir,günlükçalışmanızsırasındakarşılaşacağınızdiğerbirdurumiseüzerindeçalıştığınızbranch'emasterbranch'dekideğişikliklerinmergeedilmesidir(master->[merge]->branch).Budurumudoğurabilecekaşağıdakilerebenzerdurumlarilekarşılaşabilirsiniz

Büyükbirekipteçalışıyorsunuzveekiparkadaşlarınızyaptıklarıdeğişikliklerisıksıkmasterbranch'emergeediyorlar.Budurumdasizdeuzunzamandırüzerindeçalıştığınızbranch'inmaster'dangerikalmamasıiçinmergeişlemiyapmakisteyebilirsiniz.Tekbaşınızaçalışıyorsunuzancakfarklızamanlardafarklısebeplerilemasterbranch'emergeettğinizbirçokdüzeltmeyaptınız.Diğeryandandadahauzunsoluklubirçalışmanızıayrıbirbranchüzerindeyapıyorsunuz.Üzerindeçalıştığınızbranch'inmaster'dakideğişikliklerdengerikalmamasıiçinmergeişlemiyapmakisteyebilirsiniz.

Commit'lerideğilbranch'lerientegreetmek!Git'dedeğişikliklerinizimergeetmeişlemisırasındakaynakbranch'inizdetekilolarakhangideğişiklikleri(commit'ler)mergeetmekistedğinizitekersöylemezsiniz.BununyerineGit'dedorğrudankaynakbranch'inizintamamınıhedefbranch'emergeedersiniz,çünkügithangideğişikliklerinhedefbranch'debulunmadığınıotomatikolaraktespitedipsadecebunlarınentegreedilmesinisağlar.Kaynakbranch'dekideğişikliklerherzamanHEAD'eyaniaktifbranch'inizhangisiiseonaentegreedilir.

Git'demergeişlemiçokbasitikiadımdayapılır.

1. gitcheckoutkomutuiledeğişikliklerinaktarılacağıhedefbranch'iniziaktif(HEAD)halegetirirsiniz.2. gitmergekomutuilekaynakbranch'dekicommitedilmişdeğişiklikleriHEAD'eentegreedilir

Mergeişlemindensonragitlogkomutunuçalıştırdığınızdaisehangideğişikliklerimizin(commit)masterbranch'imizeentegreedildiğini(merge)kolaycagörebilirsiniz.

AncakGitmergeişleminiherzamanbukadarsadebirşekildeyapamaz,yaniGitherzamankaynakbranch'inizdekicommit'leriniziHEAD'esırasıylaentegreedemeyebilir.Budurumgenelliklehedefbranch'devekaynakbranch'debirbirindenbağımsızdeğişikliklerinyapılmasıdurumundagündemegelecektir.BudurumdaGit"mergecommit"adıverilenvehedehvekaynakbranch'dekiensoncommitilegerçekleşendeğişiklikleribirleştirenotomatikbircommitadımıeklediktensonramergeişleminigerçekleştirir.

Görsel:Tower-LearnGitsayfasındanalıntıdır

BazıdurumlardaGitbirdenfazlaotomatikmergecommitoluşturmakzorundakalabilir.Budurumdasizinhangimergeconflictnoktasınıseçipişlemindevametmesiniistediğinizibelirtmenizgerekecektir(MergeConflictResolution)

DeğişiklikleriMergeEtmek

Page 31: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Nasılkullanıldıklarınabağlıolarakbranch'leriikianagrupaltındatoplayabiliriz.

Bugruplamasadeceanlamsalvekullanımpratikleriileilgilibirgruplandırmadır,sonuçitibariylebranchkavramıdahaöncekibölümlerdeanlattığımızkadarbasitbirGitaracıdır

Dahaöncekibölümlerdebranchkullanımınoktasındaelinizikorkakaalıştırmamanızileilgilitavsiyelerdebulunduk.Örneğinyeniözelliklerikodlarken,bugfixyaparkenveyadeneyselözelliklerileilgiliçalışırkenistediğinizşekildekolaycavehızlıbirşekildeüstelikdüşükmaliyetlibranch'leroluşturabilirsiniz.Butüramaçlariçinoluşturulanbranch'lerinikiortaközelliğivardır

Bubranch'lertekkonuveyadeğişiklikiçinoluşturulur.Örneğinsizebildirilenbirhataiçinoluşturduğunuzbranchüzerinde"GitHubİleSistemeGiriş"benzeriyenibirözelliğikodlamayızBubranch'lerüzerindekiçalışmanızgörecelikısasürmektedir.Çalışmamıztamamlandığındabubranch'lerimasterveyadahagenişkapsamdatarifedilenbirbranch'emergeedipsileriz

İkincitürdekibranch'lerisedahaüstseviyedeanlamtaşırlarveyeniözellikler,bugfixvedeneyselçalışmalargibiodaklanmışkonularyerineprojenizistabil,testvedevelopmentgibiaşamalarınıtemsilederler.Butürbranchlerprojenizüzerindegeliştirmeyaptığınızsürecevarlıklarınısürdüreceklerdir.Tipikolarakbutürbranch'lerileilgiliaşağıdakikurallargeçerlidir

Geneldebutüruzunsoluklubranchlerüzerindedoğrudandeğişiklikyapmazsınız.Çalışmalarınızıkısavadelibranchlerüzerindeyaparakdeğişiklikleribubranch'lereentegreedersiniz.Uzunsoluklubranch'lerarasındabirhiyerarşivardır.Genelliklemasterbranchprojenizinstabilversiyonudurvehiyerarşikolarakbiraltındageliştirmelerinizientegreettğinizvedahaazstabilolabilendevelopmentbranch'iyeralır.

Uzunsoluklubranch'lerinhangikriterleregöreoluşturulacağı,nasılyönetileceğiveisimlerininneolacağıgenellikleçalışanekibeveprojeyegöredeğişebilir.Ancakherhalukardanasıbirbranch'ingstratejisininizleneceğineekipolarakfikirbirliğiiçindekararverilmelidir.

Yukarıdadabelirttiğimizgibibranch'instratejileriekibeveprojeyegöredeğişebilir,ancakaşağıdaçoğuekiptarafındankullanılabilecekbasitbirişakışıkullanabilirsiniz

Dahaöncedebelirttiğimizgibibirdenfazlauzunsoluklubranchkullanabilirsinizancakçoğuzamanbutipbiryaklaşımkarışıklıklaravefazladaneforsarfetmekgibizorluklarasebepolabilir.Tekbiruzunsoluklubranchkullanmanızdurumunda(geneldemasterismikullanılır)işinizönemlimiktardasadeleşipkolaylaşacaktır.

Buyaklaşımileçalışmanızdurumundamasterbranch'inizprojenizistabilkodunubarındırmalıdır.Kodunuzunstabilolmasınıgarantilemekiçinmasterbranch'eentegreedilen(merge)tümdeğişikliklerintestler,kodokumavsgibikalitekontrolyöntemleriiledenetlenmesigerekecektir.Bununbiryansımasıolarakdeğişikliklerindoğrudanmasterbranchüzerindeyapılmamasıgibibirzorunlulukdadoğacaktır.Eğergitcheckoutmastervesonrasındagitcommitkomutlarınıçalıştırıyorsanızbilinkistabilitekuralınıihlalediyorsunuz.

BranchingİşAkışları

KısaVadeli/KonuBazlıBranch'ler

UzunSolukluBranch'ler

BasitveFaydalıBranchingStratejileri

Sadecebirtaneuzunsoluklubranchkullanın

KonuBazlıBranchler'iBolcaKullanabilirsiniz

Page 32: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Projeniziçinyenibirözelliküzerindeçalışmakiçin,bugfixyapmakiçinveyadeneyselözellikleriveiyileştirmelerikodlamakiçinayrıbirerbrancholuşturmaktanvebubranch'lerüzerindedeğişiklikleriniziyapmaktanimtinaetmeyin.Buyaklaşımnerdeysetümbranchingişakışlarındaçoksıkkullanılanvesizindealışkanlıkhalinegetirmenizgerekenbiryaklaşımdır.

Sadecebirtaneuzunsolukluvestabilbranch'iniz(master)olduğuiçinkonubazlıbranchlerinizinhepsinibuanabranch'ibazalarakoluşturupdeğişiklierinizitamalayıpkalitekontrolsürecinizi(testler,kodokumavs)deişlettiktensonrabudeğişiklikeritekraranabranch'inizolanmaster'aentegreetmeliziniz.

Diğeryandansizkendikonubazlıbranch'inizdedeğişiklikleriyaparkenekiparkadaşlarınızdaaradakendideğişikliklerinimasterbranch'eentegreediyorolacaklarıdır.Budurumdadakendibranch'inizimasterbranch'dekideğişikliklernedeniylegünceltutmakiçinmaster'dakideğişiklikleridekendikonubazlıbranch'inizesıkçaentegreetmelisiniz.

Bubasitakıştaunutmamanızgerekentekbiraltınkuralvar;değişiklikerinizikalitekontrolsüreçleriniziişletmedenanabranch'iniziolanveherzamanstabilolmasıgerekenmaster'aentegreetmeyinaksidurumdamasterbranch'inizinstabilitesinibozabilirsiniz.

Git'deremoteveyerelbranch'lerinizpratikolarakbirbirindentamamenbağımsızdırlar.Ancakgündelikçalışmanızsırasındakendibilgisayarınızdaoluşturduğunuzbranch'lerinuzaktakisunucudakieşleniğinindeolmasınısağlamalısınız.

Remotebranchlerileyerelbranchlerisadeceyapısalolarakdeğilyaptığınızdeğişiklikleranlamındadasenkronizeetmelisiniz.Buşekildeekibinizingerikalanıdasizinyaptığınızgünceldeğişikliklerdenhaberdarolacakilaveolarakyerelbranch'leriniziyedeğinialmışolacaksınız.

Bubölümdebahsettiğimizbasitstratejilerveişakışlarıgeneldeküçükveçevik(agile)takımlartarafındankullanımauygundur.Dahabüyükprojelerdevefarklıtakımkurgularındadahasıkıkurallarvedahafarklıbranch'ingyaklaşımlarınınkullanımınıgerektirebilir.

Gitflow,ForkingvePullRequestadıverilenalternatifişakışlarıileilgiliaramayaparakfarklıyaklaşımlarıkendinizinceleyebilirsiniz.

RemoteveYerelBranch'leriniziSenkronizeEdin

DeğişiklikleriniziSıkçaRemoteBranch'lereYükleyin(Push)

DiğerBranchingStratejiler

Page 33: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Günlükçalışmamızsırasındastagingvecommitgibiversiyonkontrolüileilgiliişlemlerinçoğunuyereldiskimizdeyeralanlocalrepositoryüzerindeyaparız.Proje'deçalışantekkişisizisenizmuhtemelenInternet'deveyayerelağıdayeralanremotebirepositoryoluşturmanızadagerekolmayacaktır.

Ancaktakımçalışmasısözkonusuolduğunda,takımdakigeliştiricilerinbirlikteçalışabilmesiiçinherkesindeğişiklikleriniortakbiralandayayınlamasıvediğerlerinindebuortakalanüzerindenbudeğişikliklerikendibranch'lerineentegreetmesigerekecektir.BudurumdabaşvuracağınızenetkinaraçGit'dekiRemoteRepositoryişlevleridir.Remoterepository'lerienbasitanlamdatümekibinerişimiolandosyalsunucusuolarakdüşünebilirsiniz.

GelinşimdiLocalveRemoterepository'leribirbirindenayırantemelözellikleregözatalım

Localrepository'lergeliştiricilerinkendibilgisayarlarındayeralırkenRemoterepository'ler,çoğunluklainternetolmaküzere,ekiptekiherkesinerişebileceğibirsunucudayeralırlar.

Teknikolarakremoterepository'lerilelocalrepositorylerarasındabirfarkyoktur.Localrepository'leriçinöncekibölümlerdeelealdığımızcommitişlemi,brancholuşturmagibiişlemlerintamamıremoterepository'leriçindeyapılabiliyor.Ancaktümbubenzerliklererağmenremoterepository'leriçinWorkingCopy(aktifbranch'dekidosyalarındiskimizdekikopyaları)yapısıgeçerlideğildir,remoterpository'lerdesadeceGit'inveritabanınıntutulduğu.gitklasörüyeralır.

Localbirrepositoryancakikişekildeoluşturulabilir

BoşbirrepositoryolaraksıfırdangitinitkomutuileoluşturabilirsinizveyaRemotebirrepository'yigitclonekomutuileyereldiskinizdeindirebilirsiniz.

Remoterepository'lerdeikiyöntemileoluşturulabilir

Localrepository'nizigitclonekomutunu--bareparametresiilekullanarakremotebirrepoository'yeklonlayabilirsinizveyaBoşbirremoterepositoryoluşturmakiçingitinitkomutunuyine--bareparametresiilekullanabilirsiniz.

Git'deremoterepositoryişlemleriiçinazsayıdakomutvardır.GünlükçalışmamızsrasındabölümünbaşındadabelirttiğimizgibiGitişlemlerimizinçoğulocalrepositorymizüzerindegerçekleşirveinternetveyaağbağlantısınaihtiyaçduymayız.Ancakremoterepositorykomutlarınıkullanabilmekiçininternetveyaağbağlantısınaihtiyaçvardır.

BubölümümüzdeRemoteRespository'lerileilgiliaşağıdakikonularıelealarakayrıntılarıöğreneceğiz

RemoteBirRepository'yeNasılBağlantıSağlanırRemoteRepository'dekiVerilerinİncelenmesiRemoteDeğişiklikleriEntegreEtmekLocalBirBranch'iYayınlamak(Publish)Branch'leriSilmek

RemoteRepository'ler

Konum

Özellikler

RepositoryOluşturma

Local/Remoteişakışı

Page 34: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Remotebirrepository'yiyereldiskinizegitclonekomutuileindirdiğinizdeGitotomatikolarakbuişlemiyapmakiçinkullandığınızbağlantıbilgilerinihatırlar.Gitbubilgi'yivarsayılanolarakoriginadıverilenremotebirrepositoryolarakkayıtaltınaalır.Localolanbirrespositoryiçiniseböylebirbilgitutulmaz.AncakbölümgirişindedeelealdığımızgibiLocalbirrepository'yibazalarakyenibirremoterepositoryoluşturabiliriz.Bununiçingitclonekomutunukullanabiliriz.Örneğin

Yukarıdakiekrangörüntüsündeilkkomutumuzolangitremoteaddilelocalrepository'mizileremoterepository'mizarasındakbağlantıyıkuruyoruz.İkincikomutumuzolangitremote-vilederemoterepositorymizileilgilibilgilerigörebiliriz.

Dikkatettiysenizherbirremoterepositoryiçinbirifetchdiğeridepushişlemleriiçinkullanılanikiadresbulunur.fetchadresiniremoterepository'denyapılacakolanokumaişlemleri,pushadresinideremoterepository'yeyapılanyazmaişlemleriiçinkullanılır.Genelolarakbuikiadresaynıolmaklabirlikteperformansvegüvenlikgibigerekçelerileikifarklıadresdekullanılabilir.

Localbirrepository'niziistediğinizsayıdaremoterepositoryileilişkilendirebilirsiniz.Yukarıdakiekrançıktısındasadecebizimoluşturduğumuzgit101_ornekisimliremotelisteleniyor,birdenfazlaremoteilişkisiolsaydıhepsilistelenecekti.

RemoteBirRepository'yeBağlantıSağlamak

Page 35: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

gitclonekomuturemotebirrepository'yiyereldiskimizeindirdiktensonragitbranch-vakomutunuçalıştırdığımızdaaşağıdakigörüntüdeyeralanbilgilerlistelenecektir.

Dikkatedecekolursanızlocalrepository'lerimizhalayerindeduruyorancaklistemizdeilaveolarakorigin/HEADveorigin/masterisimliikiremotekaydıvar.Pekiyidahaöncekibölümdegitaddgit101_ornekkomutuileoluşturduğumuzremoterepositorykayıtlarımıznedenlistlenmiyor?Bununnedeniöncekibölümdekullandığımızgitaddkomutuilelocalveremoterepositoryarasındasadecebirilişki/bağlantıtanımladık,aslındabukomutsonrasındalocalveremotearasındaherhangibirveritrasferigerçekleşmez.

RemoteRepositorybilgilerigüncelolmayabilir!Gitremoterepository'lerileilgiliyereldiskinizdebirtakımbilgileriiçerir.AncakGitarakplandaotomatikolarakbubilgilerisiziniçinbelirliaralıklardagüncellemez!BuişlemingerçekleşmesivesizindiğertakımarkadaşlarınızyaptığıdeğişikliklerdenhaberdarolabilmeniziçinGit'ebubilgilerigüncellemesinisöylemenizgerekir.

Git'inremoterepositoryileilgiliyereldiskinizdetuttuğubilgilerigüncellemesinisağlamakiçingitfetchkomutunukullanmanızgerekir.

FetchkomutuyereldiskinizdekibranchlerinizeveWorkingCopy'dekidosyalarınızıgüncellemezveyadeğiştirmez.Bukomutilesadecetakımarkadaşlarınızınremoterepository'deyayınladıklarıdeğişikliklereilişkinbilgileryereldiskinizeindirilir.Dahasonrabudeğişikliklerdenhangilerinihangilocalbranch'eentegreedeceğinizekendinizkararverebilirsiniz.

Buişlemdensonratekrargitbranch-vakomutunuçalıştırdığımızdagitornek_101/masterisimliremoterepositorymizdekibranchlereilişkinbilgileridegörebiliriz.

Bilgilerinigüncellediğimizgit101_ornek/masterisimlibranch'dedeğişiklikleryapmakiçinönceliklebubranch'ibazalarakyenibirlocalbrancholuşturupdosyalarınWorkingCopyalanımızakopyalanmasınısağlamamızgerekiyor.Bununiçingitcheckoutkomutunu--trackparametresiilekullnıyoruz.

gitcheckout--trackkomutuileaşağıdakiişlemlergerçekleşir

1. Remotebranchileaynıisimdelocalbirbrancholuşturulur2. Yenioluşturulanbranchaktifhalegetirilir3. --trackingparametresinikullandığımıziçinyenioluşanlocalbranchileremotebrancharasında"trackingrelationship"

adıverilenvelocalbranch'inhangiremotebranch'dekideğişiklikleritakipettiğinigösterenilişkikurulur

TrackingRelationship(Takipİlişkisi):Git'dedahaöncekibölümlerdedebahsettiğimizgibibranchleraslındabirbirindentamamenbağımsızdırvearalarındadoğrudanbirilişkiyoktur.Ancaktrackparametresiilelocalbirbranch'inhangiremotebranch'dekideğişiklikleritakipedeceğinitanımlayabiliriz.BudurumdaGitikibranch'denherhangibirindeyeralanancakdiğerindeyeralmayancommit'leritespitederekbizibilgilendirecektir.Yani

Localbranch'inizderemotebranch'eyayınlamadığınız(push)commit'lervarsabudurumdalocalbranch'inizinremotebranch'denönde(ahead)olduğuTakımarkadaşlarınızremotebranch'ebazıcommitleripushettiğindevesizdelocalbranch'inizigüncellemediğinizdurumdalocalbranch'iniziremotebranch'ingerisinde(behind)olduğubilgisiGittarafından"TrackingRelationship"tanımısayesindegitstatuskomutununçıktısıolarakgösterilir

RemoteRepository'dekiVerilerinİncelenmesi

Page 36: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Localbranch'imizihazırladığımızagöregelinşimdibirkaçdeğişiklikyapalım.BudeğişiklikleriyaptıktansonraherzamankigibiöncedeğişikliklerimiziStagingArea'yaalıyoruzvesonrasındadacommitişleminigerçekleştirereklocalrepository'deversyonkontrolüneilişkinişlemlerimizibitiriyoruz.Sonadımolarakdagitpushkomutuilelocaldekibudeğişikliklerimiziremotebranch'deyayınlıyoruz.

gitpushpushkomutuaslındagitpushformatındadır.Ancaklocalbranch'imizioluştururkenkullandığımıztrackparametresisayesindekurulan"Takipİlişkisi"sayesindepushkomutununuzunhaliyerinesadehaliolangitpushformatındakullanabiliyoruz.

Page 37: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Takımarkadaşlarınızkendideğişikliklerinitamamlayıpremotebranch'deyayınladıktansonrasizdebudeğişiklikleriinceleyipkendilocalbranch'inizeentegreederekçalışmanızadevamedebilirsiniz.Ancakremotebranch'dekideğişikliklerientegreetmedenöncebudeğişikliklereilişkinbilgileri(dosyalarıdeğilsadecedeğişiklikleredairGit'detutulanbilgiler)görmenizveincelemenizgerekir.

Remotebranch'dekideğişiklikleridirmekiçingitfetchkomutunukullanıyoruz.Gitfetchkomutunageçilenorigindeğeriisedahaöncekibölümlerdegösterdiğimizremotes/origin/masterisimliremotebranchbağlantısınareferansvermekiçinkullanılır.

origindeğerigitfetchkomutununbirparçasıdeğilsadecebirparametre.Originyerinedahaöncelocalbranchimizilebağlantısını/ilişkisinikurduğumuzherhangibirremotebranch'igösterenbirdeğerolabilir.

gitfetchkomutuileremotebranch'dekideğişiklikleriindirdiktensonraisegitlogkomutunukullanarakburemotebranch'dekideğişikliklerileilgilibilgilerigörebiliriz.(değişikliktarihi,kiminyaptığı,değişendosyalarvecommtisırasındagirilenmesajgibi)

Değişiklikleriincelediktensonrabunlarılocalbranch'inizeentegreetmeyekararverdiğimizdeisegitpullkomutunukullanmamızgerekecek

Remotebranchdekideğişikliklerinbilgileriniindirmekiçinkullanılanfetch(türkçeanlamıgetirmek)vebudeğişikliklerientegreetmekiçinkullanılanpull(türkçeanlamıçekmek)ifadelerininbirbirineyakınanlamlarıolduğuiçinkarıştırabilirsiniz.Bukarışıklığınönünegeçmekiçinyapacağınızengüzelşeygitpullkomutunuhiçkullanmamakolacaktır.AyrıntılariçinİngilizcebirblogpostolanGit:fetchandmerge,don'tpullinceleyebilirsiniz.

Gitpullkomutuaslındaarkaarkayaikişeyyapmanızısağlar

Remotebranch'dekideğişikliklerileilgilibilgileriindirmek,yanigitfetchRemotebranch'dekideğişikliklerilocalbranch'inizeentegreetmekyanigitmerge

İlerleyenbölümlerdeçakışmalarıntespitedilmesi,çözülmesivedeğişikliklerinentegreedilmesikonularınıayrıntılıolarakelealacağızşimdiliksadeceişakışımızıözetleyipbukonuyuburadasonlandıralım.Akışımızözetleşöyleolacak

gitfetch:remote'dangüncellemebilgileriniindirgitdiff:remotevelocalarasındakifarklarıincelegitmerge:değişiklikleriotomatikmergeetçakışmavarsabirsonrakiadımageçinÇakışmaolandosyalarınızıaçınveçakışmalarıdüzeltingitadd:çakışmanıngiderildivedeğişiiklikStagingArea'yaalındı

RemoteDeğişiklikleriEntegreEtmek

Page 38: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

KendibilgisayarınızdaoluşturduğunuzLocalbirbranchsizyayınlamayakararvermediğinizsürecesadecesizinbilgisayarınızdayeralacaktır.Yanilocalbazıbranchlerinizisadecekendibilgisayarınızdatutarkenistediklerinizidetakımarkadaşlarınızvehattatümdünyailepaylaşabilirsiniz.

Gelinşimdisuperyeniozellikisimlilocalbranch'iremoterepositorymizdepaylaşalım.

Öncegitcheckoutkomutuilebranch'imiziaktifhalegetiriyoruzvesonragitpushkomutuve-useçeneğiilelocalbranch'imiziremoterepository'mizdeyayınlıyoruz.PushkomutuiçinverdiğimizoriginvesuperyeniozellikdeğerleriileHEADbranch'imizioriginremoterepository'desuperyeniozellikisimlibrancholarakyayınlanmasınıistediğimizitanımlıyoruz.-useçeneğiiselocalbranchimizileremotebranchimizarasında,öncekibölümlerdedebahsettiğimiz,Takipİlişkisi(TrackingRelationship)kurulmasınısağlar.

gitbranchkomutunu-vvaseçeneğiileçalıştırdığınızdakurulmuşTakipİlişkisibilgilerinidegörebilirsiniz.

Localbranch'iremoterepository'deyayınladıktansonralocalbranch'deyaptığımızdeğişikliklerigitpushkomutunuparametresizkullanarakremotebranch'imizdeyayınlayabiliriz.

Artıkremoterepository'yeerişimyetkisiolanherkessuperyeniozellikisimlibubranchinizigörebilirvebubranch'ibazalarakkendideğişiklikleriüzerindeçalışmayapabilir.

LocalBirBranch'iYayınlamak(Publish)

Page 39: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Biröncekibölümdeoluşturduğumuzsuperyeniozellikisimlibranchüzerindekiçalışmamızıtamamlayıpkalitekontrolsürecimizideişlettiktensonrabudeğişikliklerimasterbranch'imizeentegreettiğimizivarsaylım.Buentegrasyonsonrasındasuperyeniozellikisimlibranch'eihtiyacımızyokveartıkbubranch'isilebiliriz.Bubranch'ikendibilgisayarımızdansilmekiçingitbranch-dsuperyeniozellikkomutunu,remoterepository'densilmekiçindegitbranch-drsuperyeniozellikkomutunukullanabiliriz.

Silmekistediğinizlocalbranchaktifisegitbranch-dkomutuhataverecektir.Silmeişlemiöncesindesileceğinizlocalbranch'denfarklıbirbranch'igitcheckoutkomutuileaktifhalegetirmeyiunutmayın.

Remotebranch'igitbranch-drkomutuilesildiğinizhalderemoterepository'yeerişipbranchlerikontroledersenizsuperyeniozellikisimlibranch'insunucudahaladurduğunuzgöreceksiniz.Bununnedenigitbranch-drkomutundakiseçeneklerdenrseçeneğininsuncudakibranch'ideğilyerelbilgisayarınızdaremotebranchbilgilerinisiler.Budeğişikliğinsuncudadageçerliolmasıiçinyanisunucudakibranch'idesilmekiçingitpushorigin:superyeniozellikkomutuiledeğişikliğibiranlamdaremoterepositry'deyayınlamanızgerekiyor.

Dahaayrıntılıbilgiiçinbakınız(StackOverflow-İngilizce)

Branch'leriSilmek

Page 40: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Bubölümdeaşağıdakiileriseviyeişlemleriveilişkilikomutlarıelealacağız

DeğişiklikleriniziGeriAlmakVersiyonlarArasındakiFarklarıİncelemekÇakışmalarıGidermekMergeAlternatifiOlarakRebaseKullanımı

İleriSeviyeKomutlarveİşlemler

Page 41: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Git'inengüzelyanlarındanbirideyaptığınızherhangibirdeğişikliğikolaycagerialabilmemızıağlamasıdır.

Commitişlemlerinizinekadardikkatliyaparsanızyapınbazencommit'edahiletmeyiunuttuğunuzveyayanlışlıkladahilettiğinizdosyalarolabilirveyacommitmesajındaeksikbilgivermişolabilirsiniz.Budurumdasoncommitişleminiziyenidenyapmakiçingitcommitkomutunu--amendseçeneğiilekullanabilirsiniz.Sadececommitmesajınızıdeğiştirmekistiyorsanız--amend-mseçenekleriilegitcommitkomutunuçalıştırabilirsiniz,eğersoncommit'edosyaeklemekveyadosyaçıkarmakistersenizcommitkomutundanönceöncekibölümlerdedebahsettiğimizgitaddvegitrmkomutlarıileönceStagingişleminiyapabilirsiniz.

VersyonKontrolününAltınKuralları

#5AslaYayınlanmışCommitleriniziDüzeltipTekrarYayınlamayın

gitcommitkomutunun--amendseçeneğicommithatalarımızıhızlıcavekolaycadüzeltebilmemiziçinoldukçafaydalıbirseçenektir.Ancakbuseçeneğikullanmadanönceaşağıdakinoktalarıdikkatealmalısınız

Buseçeneksadecesoncommitişlemimizidüzeltmemizisağlar,öncekicommitlerimizibuseçenekiledüzeltemeyiz.Buseçenekilecommitişlemisonrasındabiröncekicommitişleminedairbilgilersilinir.Projeüzerindeçalışantekkişiisenizbuseçeneğikullanmanızsorunyaratmayacaktırancakbirtakımiçindeyeralıyorsanızdiğertakımarkadaşlarınızsonradan--amendiledüzeltttiğinizhatalıcommitişleminizibazalarakkendileridedeğişiklikleryapmışolabilirler.Budurumtakımarkadaşlarınıziçinsorunoluşturacaktır,çünküonlarınbazaldıklarıcommitileilgiliGit'deartıkherhangibirkayıtyeralmaycak.

HenüzcommitetmediğimizdeğişiklikliklereLocaldeğişiklikdenir.Bazenöncekihalindendahakötüolankodyazabilirsinizvebudeğişikliğigerialmakisteyebilirsiniz.Bugibidurumlardadeğiştirdiğinizhalindenmemnunolmadığınızdosyadakideğişikliklerigerialıpdosyanınsoncommitedilmişhalinegeridönmekistediğinizde,öncekibölümlerdedesıkcakullandığımız,fitcheckoutkomutunu--seçeneğiileçalıştırmanızyeterliolacaktır.

$gitcheckout--dosya1.mdveya$gitcheckout--klasor/dosya2.mdşeklindekullanabilirsiniz.

Tümdosyalardayaptığınızdeğişikliklerigerialmakistiyorsanızgitresetkomutunu--hardseçeneğiilekullanabilirsiniz

$gitreset--hardHEAD

BukomutileGittümdosyalarınsoncommitedilendeğişiklikleriiçerenHEADversiyonundakihallerininWorkingCopy'nizegeriyükler.

gitcheckout--vegitreset--hardkomutlarısonrasındakayıtaltınaalınmamışolantümdeğişikliklergeridönüşüolmayacakşekildeyokolur.Bunedenlebukomutlarıçalıştırırkendikkatliolmalısınızveikidefadüşünmelisiniz.

Hatalıbirdüzenlemeyaptığınızda(kibugeneldetestedilmedenyapılancommit'lersonrasındaoluşanbirdurumdur)veya

DeğişiklikleriniziGeriAlmak

SonCommitBilgileriniDüzeltmek

LocalDeğişiklikleriGeriAlmak

CommitEdilenBirDeğişikliğiGeriAlmak

Page 42: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

geliştirdiğinizbirözelliğinartıkgerekliolmadığınakararverildiğindeyaptığınızdeğişikliğigerialmanızgerekecektir.

gitrevertkomutucommitettiğinizherhangibirdeğişikliğigerialmakiçinkullanılır.Bukomutilecommitişleminizinkendisiveyabilgilerisilinmezsadececommitişleminizdekideğişiklikgerialınır.Örneğineklediğinizbirsatırıkaldırmakistersenizgitrevertkomutuilebunuyapabilirsiniz.Aslındagitrevertkomutudeğişkliğinizigerialmakiçinotomatikolarakyenibircommitoluştururvegerialmaişlemibucommitsayesindedeğişikliktarihçesindegörünürhalegelir.

Yukarıdakiekrangörüntüsündeilköncegitrevertkomutunuçalıştırdık.Bukomutunenönemliparametresigerialmakistediğimizcommit'inhashdeğeri(hash'inilkaltıkarakterinikullanabiliriz).Komutuçalıştırdıktansonradeğişikliktarihçesiniincelediğimizdegit'inotomatikolarakbircommitoluşturduğunuvebucommit'inbilgilerindehangideğişikliğingerialındığınadairayrıntılarınyeraldığınıgörüyoruz.

Değişikliklerigerialmakiçinkullanabileceğimizdiğerbirkomuisegitresetkomutun.Bukomutdaherhangibirbilginizisilmedenişlemigerçekleştirir,ancahgitrevertkomutundanfarklıolarakotomatikyenibircommitüretmedendeğişikliğinizigerialmanızısağlar.

Bukomutiçindegitrevertkomutundaolduğugibigerialmakistediğimizcommit'inhashdeğeriniveriyoruz.Kullandığımızdiğerbirseçenekolan--hardseçeneğiiselocaltümcommitlerinizisilerekgerialmaişlemininyapılmasınanedenolur,bunedenle--hardseçeneğinikulllanırkendikkatliolmalısınız.Localcommit'lerinizinkorunmasınıistiyorsanız--keepkomutunukullanabilirsiniz.

30güniadegarantisi!gitresetkomutuilegerialmaişlemisonrasındagerialdığınıznoktadansonrakitümdeğişikliklertarihçedensilinecektir.Ancakgitbusilinenbilgileri30günkadarveritabanındatutmayadevamedecektir.Eğeryanlışlıklagerialmaişlemiyaptığınızıfarkederseniz30güniçindesilinenherhangibircommit'inizigerialabilirsiniz.

30günlüksürenasıldeğiştirilebiliriSilinencommithangikomutlarilegerialınır

Page 43: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Dahaöncekibölümlerdebolcakullandığımızgitstatusvegitlogkomutlarıyaptığınızdeğişikliklerileilgiliönemlibilgilersunar.Ancakbuikikomutilesadecedeğişikliklerimizingenelbilgilerinigörebiliriz,dosyalarımızdayaptığımızdeğişikliklerinayrıntılarınıbukomutlarilegöremeyiz.Git'debuikikomutdışındadeğişikliklerivefarklarıincelemekiçinfarklıkomutlardayeralır.

Versiyonkontrolsistemlerindeikiversiyonarasındakideğişikliklereİngilizcedifference(fark)kelimesininkısaltmasıolandiffdenir.Git'deikiversiyonarasındakifarklarıgörmekiçingitdiffkomutunukullanabilirsiniz.Örneğingitdiff374c6f..5d903edosya1.mdkomutuiledosya1.mddosyasının374c6fve5d903ehash'licommmitlerdekiikiversiyonunundiff'inialıyoruz.

gitdiffkomutunuçalıştırdığımızdayukarıdakigibibirekranilekarşılaşacaksınız.Gelinşimdibuekrandanumaralandırdığımızönemlialanlardahangibilgilerinbizegösterildiğinielealalım

1. KarşılaştırılanDosyalar(A/B):Diffkomutuikidosyayıbirbiriilekarşılaştırır,AdosyasıveBdosyası.BuAveBdosyalarıgeneldeaynıdosyanın(bizimörneğimizdedosya1.md)farklıversiyonlarıdır.Çoksıkolmasadadiffişlemiiletamamenfarklıolandosyaları(örneğindosya1.mdvedosya1_enyeni.md)dakarşılaştırabilirsiniz.HangidosyalarınkarşılaştırıldığınıaçıkçabelirtmekiçindiffkomutununçıktısıherzamanhangidosyanınAhangidosyanındaBolduğunubelirterekbaşlar.

Bubilgininhemenaltındaindexilebaşlayansatırdapratikolarakpekişinizeyaramayacakdosyabilgileriyeralır.Bubilgilerdenilkikisikarçılaştırılanversiyonlarınhashdeğerisonuncusuda(1000644)dosyamodubilgisidir.

2. A/BDosyaSimgeleri:DosyaiçeriğininhangikısmınınAhangikısmınındaBdosyasınaaitolduğunubelirtmekiçinkullanılan-ve+sembollerindenhangisininhangidosyayaaitolduğubilgisi.

3. Farkİşaretçileri:Diffkomutuilesadeceikidosya(aslındaversiyondadenilebilir)arasındakifarklarınolduğusatırlargösterilir,dosyanıntamamı(değişmeyensatırlardadahil)gösterilmez.@@simgeleriilebaşlayansatırdaAveBdosyalarıarasındakifarklısatırlarınhangisatırdanbaşlayıpkaçsatırolduğubilgisigösterilir.Bizimekrangörüntümüzdeyeralan@@-1,4+1,2@@bilgisibizeşunusöyler

(-)simgesiiletanımlananAdosyasından1.satırdanbaşlayarak4satır,+simgesiiletanımlananBdosyasından1.satırdanbaşlayarak2satırbirbirindenfarklı

4. DeğişiklikleriOkumak:Değişenhersatırınbaşında(-)veya(+)simgesiyeralır.BusimgelerileAveBversiyonlarınıniçeriğininneolduğunuanlamamızdabizeyardımcıolacaktır.Örnekekrangörüntüsünde(-)ilebaşlayanveAversiyondakisatırlarındahasonra(+)ilebaşlayanBversiyonundakisatırlariledeğiştirildiğinigörüyoruz.

DahaöncekibölümlerdegitstatuskomutuileLocalbranch'imizdehangidosyalarındeğiştiğinigörebileceğimiziörğrenmiştik.gitstatuskomutuiledosyalarıniçeriğindekideğişikliklerigöremeyiz.İçerikdeğişikliklerinidegörmekiçindoğrudangitdiffkomutunuherhangibirparametreveyaseçenekbelirtedenkullanabilirsiniz.

SadeceStagingArea'yacommitedilmeküzereeklenmiş/çıkarılmışdosyalardakideğişikliklergörmekistersenizgitdiff--stagedkomutunukullanabilirsiniz.

VersiyonlarArasındakiFarklarıİncelemek

İkiversiyonarasındakifarklarıyorumlamak

LocalBranch'dekifarklarıincelemek

Commitedilmişdosyalardakifarklarıgörmek

Page 44: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

gitlogkomutunucommitişlemleriileilgiliözetbilgilerigörmekiçinkullanabiliriz.Bukomutuherhangibirparametreveyaseçenekbelirtmedenkullanırsanızdosyaiçeriğindekifarklarıgöremezsiniz.Dosyalarıniçeriğindekifarklarıdagörmekiçingitlogkomutunu-pseçeneğiilekullanabilirsiniz.

$gitlog-pşeklinde

İkifarklıbranch'inarasındakiiçerikfarklarınıgörmekiçingitdiffkomutunakarşılaştırmakistediğinizbranchisimleriniparemetreolarakverebilirsiniz.Örneğinmasterilesuperyeniozellikbranch'inikarşılaştırmakiçingitdiffkomutuaşağıdakigibioalcaktır

$gitdiffmaster..superyeniozellik

Branch'lerikarşılaştırabildiğinizgibiikifarklıversiyonarasındakitümdosyalarıniçeriğinideversiyonlarınhashdeğerlerinigitdiffkomutunaparametreolarakvererekkarşılaştırabiliriz.Örneğin

$gitdiff74c6f..5d903e

komutuile74c6fhashdeğeriolancommit(versiyon)ile5d903ehashdeğerinesahipcommit'indosyalarıarasındakifarklarıgörebilirsiniz.

İkiFarklıBranch'iKarşılaştırmak

Page 45: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Versiyonkontrolüileilgiliinsanlarınensevmediklerivekorktuklarışeydeğişikliklerientegreetme(merge)işlemisırasındaoluşançakışmalarvebuçakışmalarınçözülmesisürecidir.Bubölümdeçakışmalardankorkmamamızgerektiğinievçakışmalarıenkolayveefektifbirşekildenasılçözebileceğimizielealacağız.

Gitileçalışıyorsanızistediğinizzamanyanlışyaptığınızdeğişiklikentegreetmeişleminigerialarakbuişlemetemizdosyalarileyenidenbaşlayabilirsiniz.BukonudaGit'egüvenmenizyeterliolacaktır.MergeişlemisırasındaişinçoğunuGitsizinyerinizeotomatikolarakyapacakvesizesadecebasitçakışmalarıçözmekkalacaktır.Git'indiğerbirgüzeltarafıiseçakışmalarınsadecekendilocalbranch'inizdeolmasıvehiçbirzamansunucutarafındaolamamasıdır.Böylecemergeişlemisırasındameydanagelençakışmadatakımarkadaşlarınızetkilenmeyecektir.

Git'demergeişlemibşakabirbranch'dekideğişiklikleriüzerindeçalıştığınızkendibranch'inizeentegreetmeişlemidir.Gitmergeişlemisırasındadeğişikliklerinçoğunusiziniçinotomatikolarakentegreeder.

AncakbazıdurumlardaGitmergeişleminiotomatikolarakgerçekleştiremezvesizinmüdahaleederekhangideğişikliğinnasılentegreedileceğinekararvermenizgerekir.Budurumgenellikleaynıdosyaüzerindedeğişiklikleryapıldığındaortayaçıkar,budurumdabileGitdosyadakideğişikliklerinasılentegreedileceğineçoğuzamanotomatikkararverebilir.Fakataynısatırdayapılandeğişikliklerveyatakımdakibirkişininbirsatırısilmesidurumundasizinbudeğişikliğikendibranch'inizenasılentegreedileceğinekararvermenizgerekir.BudurumdaGitdosyanızıconflicted(çakışmalı)olarakişaretlervesizinçalışmanızadevamedebilmeniziçinbuçakışmayıçözmenizgerekir.

Çakışmaoluştuğundailkyapmanızgerekenşeyçakışmanınnedenolduğunuanlamakolmalıdır.Örneğintakımarkadaşınızaynıdosyadasizindedeğiştirdiğinizbirsatırımıdeğiştirdiveyaaynıdısyadabirsatırmısildiveyasizinleaynıisimliyenibirdosyamıoluşturdu?

gitstatuskomutunuçalıştırdığınızdaGitsizebranch'inizdeentegreedilmemişdosyalarolduğunusöyleyecektir.

Yukarıdakiekrangörüntüsündedosya1.mdisimlidosyamızdaçakışmaolduğunugörebiliriz.Buçakışmayıdüzeltmekiçindosyamızıaçıpçakışansatırlarıdüzeltmemizgerekiyor.

dosya1.mddosyasınıaçtığımızdayukarıdakinebenzerbirgörüntüilekarşılaşıyoruz.

<<<<<<<<<HEADilebaşlayanve============kadardevamedenkısımdosyanınbizimbranch'imizdeolanversiyonunaait================belirtecindensonrakikısımdadeğişikliklerientegreetmekistediğinizbranch'deyeralandosyanıniçeriğinigösterir.

$gitmergetooldosya1.mdkomutunuçalıştıraraköncekibölümlerdekonfigürasyonayarlarınıyaptığımızDiffMerge

uygulamasınıdaaçabilirsiniz.

Dosyamızıniçeriğininneolacağınakararveripkaydettiktensonranormalbircommitişlemiileçakışmayıçözmeişleminitamamlıyoruz.

ÇakışmalarıGidermek

Gitilegüvendesiniz

ÇakışmaNasılOluşur?

ÇakışmalarıNasılÇözeriz

Page 46: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

$gitadddosya1.mdiledosyamızıStagingArea'yaekliyoruz$gitcommit-m"değişikliklerentegreedildi"komutuiledecommitişleminitamamlarız.

Dosyanızınmergeişleminebaşlamadanöncekihalineistediğinizzamangeridönebilirsiniz.Bununiçinyapmanızgerekentekşeygitmerge--abortkomutunuçalıştırmak.

MergeİşleminiNasılGeriAlabiliriz?

Page 47: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Mergekomutuikibrancharasındakideğişikliklerientegreetmeninenkolayyoluolmaklabirliktetekyoldeğildir.Rebasekomutudaikibranch'ıentegreetmekiçinkullanılanmergekomutunaalternatifbirkomuttur.Budurumdakafanızda"Nedenmergeyerinerebasekullanmakisteyelim?"şeklindebirsoruoluşabilir.Busorununcevabınıbulmakiçinöncegelinmergekomutununbirazdahaiyianlamayaçalışalım.

Gitmergeişleminigerçekleştirmedenönceaşağıdakiüçcommit'itespiteder

İkibranch'inortakcommit'i:İkibranch'indetarihçesinidahayakındanincelediğinizdebubranch'lerinzamanınbirnoktasındaortakbircommit'esahipolduklarınıgörürüz.Buandaherikibranch'indeiçeriğibirerbiraynıdır.Branch'lerinsoncommit'leri:Herikibranchiçindeyapılansoncommit'ler

BuüçcommittespitedildiktensonraGitbuüçcommit'ibirleştirerekentegrasyonuyapabilir.

Basitbazıdurumlardabranch'lerdenbirtanesindeherhangibirdeğişiklikyapılmamıştırvebubranch'inyukarıdakibölümdebelirttiğimizortakcommit'ivesoncommit'iaynıdır.Budurumdamergeişlemiçokbasitleşirvegitdiğerbranch'intümcommit'leriniortakcommit'inüzerineekleyerekmergeişleminiyapar.BuözeldurumaGitterminolojisinde"Fast-ForwardMerge"denirveherikibranch'intarihçesideortaktır.

Fakatçoğuzamanherikibranch'debirbirindenbağımsızolarakdeğişikliğeuğrarvetarihçeaçısındanbirbirindenuzaklaşırlar.BudurumdamergeişleminiyapmakiçinGit'inherikibrancharasındakideğişiklikleriiçerenotomatikbircommitoluşturmasıgerekir.Oluşturulanbucommit'eGitterminolojisinde"MergeCommit"denir.

Normalcommit'leriyazılımgeliştiricilerinceeleyipsıkdokuyarakoluşturulurlar,diğeryandanMergeCommitleriseGittarafındanotomatikoluşturulurlar.Mergeişlemiileilgiliayrıntılarıdahasonradanincelemekistersenizherikibranch'incommittarihçesinevecommitçizelgesinebakmanızgerekir.

Bazıtakımlarikibranch'iyukarıdaanlattığımızotomatikmergecommit'leryerinerebaseileentegreetmeyitercihedebilir.Rebasesonrasındaprojenizinikifarklıbranch'iolduğunadairherhangibbirtarihselizoluşmaz.

Gelinşimdirebaseişlemininnasılyapıldığınabakalım.ÖrneksenaryomuzdaBranch-B'dekideğişiklikleriBranch-A'yaentegreedeceğizRebaseişleminigitrebasekomutunuaşağıdakigibikullanarakyapıyoruz.

$gitrebaseBranch-B

BukomutileGitöncelikleBranch-AileBranch-B'ninortakensoncommit'inibuluportakcommitsonrasındaBranch-A'dayapılandiğertümcommit'lerigerialır.Aslındabucommitlersilinmezsadecegeçiciolarakfarklıbiryerdesaklanır.DahasonraBranch-B'dekitümcommitlerBranch-A'yauygulanır.SonaşamadaiseBranch-A'nıngeçiciolarakfarklıbiryerdesaklanancommit'leritekraruygulanır.BuişlemlersonrasındatümdeğişikliklersankisadeceBranch-Aüzerindegerçekleşmişgibigörünür.

MergeAlternatifiOlarakRebaseKullanımı

Mergekomutunadahayakınbirbakış

Fast-ForwardveMergeCommit

NormalCommitleriveMergeCommitleriAyırdetmek

Rebaseiledeğişikliklerientegreetmek

Page 48: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Bubölümdeaşağıdakikonulardanbahsedeceğiz

GörselGitistemcileriGitilekullanılabilecekdiff/mergearaçlarıGitservisleriKaynaklarveReferanslar

GitAraçveServisleri

Page 49: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

ÖncekibölümlerdeTerminalkullanarakbirçokGitkomutunununnasılkullanıldığınısizegösterdik.Ancakgünlükçalışmanızdaherbirkomutunayrıntılıolarakneişeyaradığını,hangiparametrelerveseçeneklerikabulettiğiniaklınızdatutumakzorolacaktır.BunedenleGit'igünlükişakışınızaentegreedipGitkavramlarınıöğrendiktensonragörselbirGitistermcisikullanmakişiniziciddiorandakolaylaştıracaktır.

SourceTreeücretsizbiruygulamadırveMacOSX,WindowsveLinuxişletimsistemlerindeçalışmaktadır.

SourceTree'yibulinktenindirebilirsiniz

GitEye:Linux'unyanısıraOSXveWindowsişletimsistemlerindedekullanılabilir.gitggiggleGitForceRabbitVCS

Tower,sadeceMacOSX'deçalışanücretlibiruygulama.Bulinkikullanarakuygulamanın30günlükdenemesürümünüindirebilirsiniz.

ProjelerinizinkaynakkodunuGitHub'datutuyorsanızGitHub'ınücretsizMacOSXveWindowsiçingeliştirdiğikullanımıoldukçakolayolanveGit'inkarmaşasındansizibirnebzeolsunuzaklaştırabilecekuygulamasınıkullanabilirsiniz.BuuygulamanınMacOSXversiyonunuburadanveWindowsversiyonunudaburadanindirebilirsiniz.

WindowsversiyonundaGitShellisimliTerminalbenzeriuygulamanınkurulumudayeralıyor.BunedenledahakarmaşıkGitkomutlarıiçinTerminalbenzeribirdeneyimistiyorsanızGitShell'irahatlıklakullanabilirsiniz.

WindowskullananlarücretsizbiruygulamaolanTortoiseGituygulamasınıbulinktenindiripkullanabilirler.ÖzellikledahaönceSubversionveTortoiseSVNkullananlariçinTortoiseGitbenzerbirdeneyimsunmaktadır.

DiğergörselGituygulamalarınıGit'inkendisayfasındaninceleyebilirsiniz.

GörselGitİstemcileri

AtlassianSourceTree

Linux'aÖzelİstemciler

Tower

GitHub

TortoiseGit

DiğerUygulamalar

Page 50: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Projenizdenelerolupbittiğinianlamakiçinzamanzaman(aslındabirtakımiçindeyeralıyorsanızsıksıkdadenilebilir)dosyalarınversiyonlarıarasındakifarklarınneolduğunabakmanızveçakışmadurumundadaçakışmalarıinceleyipçakışmadurumunugidermenizgerekir.

4.BölümdeTerminal'denherhangibiryardımcıuygulamayagerekkalmadandaGit'inbizebufarklarıgösterebildiğinevebufarklar'ınasılokuyabileceğimizedeğinmiştik.AncakbüyükprojelerdeGit'insunduğubuişlevilefarklarıokumakçokkolayolmayacaktır.Bunedenlefarklarıdaharahatinceleyebilmekiçinbufarklarırenklerveformatlamayöntemleriilegörselleştirenaraçlardanfaydalanmakişinizikolaylaştıracaktır.Farklarıgörselleştirenbuuygulamalarınnerdeysetamamıaynızamandaçakışmalarıdagörselleştiripmergeişleminidekolaycayapmanıziçinaraçlarsunar.

WindowsüzerindeçalışıyorsanızWinMerge(ücretsiz)veyaAraxisMerge(ücretli)kullanabilirsiniz.

MacOSXüzerindeçalışıyorsanızSourceGearDiffMerge(ücretsiz)veyaAppleXCodeilebirlikteücretsizgelenApple'inFileMergearacınıkullanabilirsiniz.

Diff/MergeAraçları

Page 51: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Takımçalışmasısözkonusuolduğundaenönemlikonulardanbirisidekaynakkodununveyadahagenelanlamdadosyalarınnasılpaylaşılacağınakararvermektir.Bunoktadaikiseçeneğinizvar1)dosyalarınızıkendisunucularınızüzeridenpaylaşmakveya2)işipaylaşımvebarındırmahizmetivermekolanonlineservislerkullanmak

Dosyalarınızıkendisunucularınızüzerindenpaylaşmanınaşağıdakigibiavantajlarıvardır

DüşükmaliyetDosyalarınızkendisunucularınzdadırGit'inveyahangiversiyonkontrolsisteminikullanıyorsanızbusistemintümözellikleriniistediğinizgibikullanabilirsiniz.

Ancakbuseçeneğinaşağıdakidezavantajlarınıdagözardıedemeyiz

SunucularınçalışırhaldeveerişilebilirolmasınısağlamaksizinsorumluluğunuzdadırYedeklemesorumluluğusizdeolacakGüvenlikveyazılımgüncellemelerinidesizintakipetmenizgerekir

Eğersunucukaynaklarıyeterliolan,yedekleme,güncellemegibisunucuyönetimikonularındaayrıveuzmanekibiolanbirkurumdaçalışıyorsanızdosyalarınızıkendisunucularınızdabarındırmakilktercihinizolacaktır.Ancakküçükbirgirişimsenizveyaaçıkkaynakbirprojenizvarsasunucuyönetimiileilgiliyeterinceuzmanlığınızvekaynağınızolmayabilir.Budurumdadosyalarınızıonlinebirservisüzerindebarındırmakveburadanpaylaşımaaçmaksiziniçindahamantıklıolacaktır.

ÖzellikleaçıkkaynakprojeleriçinoldukçapopülerbirservisolanGitHub'ıkullanabilirsiniz.GitHubaçıkkaynakprojeleriçinücretsizolmaklabirlikte,kurumlarveözelprojeleriçindeoldukçamakulfiyatlaraGitsunucuhizmet'isunmaktadır

GitHubAnaSayfa

DahaönceküçükbirgirişimolarakMercurial(budadağıtıkbirversiyonkontrolsistemi)hizmetisunmakiçinkurulanBitBucketAtlassiantarafındansatınalındıktansonraGitsunucuhizmetidesunmayabaşladı.BitBucketaçıkkaynakveyaözel5kullanıcıyakadarolansınırsızsayıdaprojeniziçinücretsizhizmetsunaraynızamandaoldukçamakulfiyatlaradadahafazlakullanıcıiçinücretlishizmetseçeneğidevar.

BitBucketAnaSayfa

GitServisleri

GitHub

BitBucket

Page 52: i. Versiyon Kontrolü Nedir? · 2015-01-12 · Text, Notepad, Visual Studio, Word, AutoCAD) ... İşletim sisteminiz Mac OS X ise Git kurulumu için iki yöntem kullanabilirsiniz.

Gitoldukçaçokseçeneğivefarklıkullanımşekliolanbirdağıtıkbirversiyonkontrolsistemidir.Gitileilgilidahafazlabilgiedinmekistiyorsanızönceiyiderecedeİngilizceöğrenmenizitavsiyeediyorum.DahasonradaaşağıdakikaynaklardanbaşlayarakGitileilgilibilginiziarttırabilirsinzi.

1. Git-ScmReferansDokümanı2. GitRefReferansDokümanı3. LearnVersionControlwithGit4. AtlassianGitTutorials5. ProGitBook6. AtlassianGitWorkflows7. LearnGitBranchingOnlineTutorialApplication8. Git:fetchandmerge,don'tpull9. Resolvingamergeconflictfromcommandline10. AddingAndRemovingRemoteBranches–GitBranch

KaynakçaveReferanslar