Git ve GitHub - Sürüm Kontrolü Nedir ve Nasıl Çalışır?

Git ve GitHub'ın nasıl çalıştığı konusunda hiç kafanız karıştı mı? Endişelenme - yalnız değilsin. Git ve GitHub bazen yanıltıcı olabilir, ancak bu yazının sonunda ikisini iyi bir şekilde kavrayacaksınız.

İlk başta Git ve GitHub'ın aynı şey olduğuna inanmak cazip gelebilir. Ama gerçekte değiller. Gerçekten de GitHub olmadan Git kullanmak mümkündür! Ve nihayetinde, ikisi farklı amaçlar için var.

Bu gönderi, Git ve GitHub'ın amaçlarına iyice bir göz atarak başlayacak. Daha sonra, bu iki hayati teknoloji arasındaki temel farkları öğreneceğiz.

Daha fazla uzatmadan, hadi Git ile başlayalım.

Git nedir?

Git, bir dosyanın (veya dosya kümesinin) farklı sürümlerini kaydetmek için kullanılan bir Dağıtılmış Sürüm Kontrol Sistemidir (DVCS), böylece herhangi bir sürüm istenildiği zaman alınabilir.

Git ayrıca farklı dosya sürümlerini kaydetmeyi ve karşılaştırmayı kolaylaştırır. Bu, neyin değiştiği, kimin neyi değiştirdiği veya bir sorunu kimin başlattığı hakkındaki ayrıntıların her an gözden geçirilebileceği anlamına gelir.

Ancak Git bir Dağıtılmış Sürüm Kontrol Sistemiyse, bu terimler tam olarak ne anlama geliyor?

"Dağıtılmış" ne anlama geliyor?

"Dağıtılmış" terimi, Git'e bir projenin dizinini paylaşma talimatı verdiğinizde, Git'in yalnızca en son dosya sürümünü paylaşmadığı anlamına gelir. Bunun yerine, o proje için kaydettiği her sürümü dağıtır.

Bu "dağıtılmış" sistem, diğer sürüm kontrol sistemleriyle keskin bir tezat oluşturuyor. Yalnızca bir kullanıcının merkezi / yerel veritabanından açıkça kontrol ettiği tek sürümü paylaşırlar.

Tamam, yani "dağıtılmış" demek , bir proje dosyalarının Git'in kaydettiği tüm sürümlerini - yalnızca seçilen birkaç sürümü değil - dağıtmak anlamına gelir . Peki sürüm kontrol sistemi tam olarak nedir?

Sürüm Kontrol Sistemi nedir?

Bir Sürüm Kontrol Sistemi (VCS), bir dosyanın sürümlerini ileride başvurmak üzere kaydetmek için kullanılan yöntemi ifade eder .

Sezgisel, birçok kişi zaten sürüm kontrolü gibi çeşitli şekillerde aynı dosyanın farklı sürümlerini yeniden adlandırarak projeleri blogScript.js, blogScript_v2.js, blogScript_v3.js, blogScript_final.js, blogScript_definite_final.js, vb. Ancak bu yaklaşım hataya açıktır ve ekip projeleri için etkisizdir.

Ayrıca neyin değiştiğini, kimin değiştirdiğini ve neden değiştirildiğini izlemek, bu geleneksel yaklaşımla sıkıcı bir çabadır. Bu, Git gibi güvenilir ve işbirliğine dayalı bir sürüm kontrol sisteminin önemini aydınlatır.

Ancak Git'ten en iyi şekilde yararlanmak için Git'in dosyalarınızı nasıl işlediğini anlamak önemlidir.

Git'teki dosya durumları

Git'te, bir dosyanın olabileceği üç birincil durum (koşul) vardır: değiştirilmiş durum , aşamalı durum veya kararlı durum .

Değiştirilmiş durum

Değiştirilmiş durumdaki bir dosya, revize edilmiş - ancak kaydedilmemiş (kaydedilmemiş) - bir dosyadır.

Diğer bir deyişle, değiştirilmiş durumdaki dosyalar, değiştirdiğiniz ancak Git'e izlemesi için açıkça talimat vermemiş olduğunuz dosyalardır.

Aşamalı durum

Aşamalı durumdaki dosyalar, mevcut durumlarında (sürüm) seçilen değiştirilmiş dosyalardır .gitve bir sonraki kaydetme anlık görüntüsü sırasında arşive kaydedilmek (kaydedilmek) için hazırlanmaktadır .

Bir dosya hazırlandıktan sonra, Git'e o dosyanın sürümünü izlemek için açıkça yetki verdiğiniz anlamına gelir.

Kararlı durum

Kaydedilmiş durumdaki dosyalar, .gitarşivde başarıyla depolanan dosyalardır .

Bu nedenle, taahhüt edilen dosya, aşamalı sürümünü Git dizinine (klasörüne) kaydettiğiniz bir dosyadır.

Not: Bir dosyanın durumu, Git'in onu yerleştireceği konumu belirler.

Dosya konumları

Git ile sürüm kontrolü yapılırken bir dosyanın sürümlerinin bulunabileceği üç anahtar yer vardır: çalışma dizini , hazırlama alanı veya Git dizini .

Çalışma dizini

Çalışma dizini, bir projenin dosyaları için yerel bir klasördür. Bu, bir sistemde herhangi bir yerde oluşturulan herhangi bir klasörün bir çalışma dizini olduğu anlamına gelir.

Not:

  • Değiştirilmiş durumdaki dosyalar çalışma dizininde bulunur.
  • Çalışma dizini dizinden farklı .git. Yani, Git bir .gitdizin oluştururken bir çalışma dizini oluşturursunuz .
  • İki depo arasındaki daha fazla fark için bu karşılaştırma makalesine göz atın.

Evreleme alanı

Teknik olarak Git dilinde "dizin" olarak adlandırılan evreleme alanı, genellikle .gitdizinde bulunan ve dizine işlenecek sıradaki dosyalar hakkındaki bilgileri depolayan bir dosyadır .git.

Not:

  • Hazırlanmış durumdaki dosyalar, hazırlama alanında bulunur.

Git dizini

.gitDizin Git sen izlemek için talimat gelmiş çalışma dizininin içine oluşturur (aynı zamanda “depo” olarak adlandırılır) klasördür.

Ayrıca .gitklasör, Git'in nesne veritabanlarını ve izlemesi için talimat verdiğiniz dosyaların meta verilerini depoladığı yerdir.

Not:

  • .gitDizin Git hayatı - bu, başka bir bilgisayardan bir depo klonlamak zaman kopyalanan öğe (veya GitHub'dan gibi çevrimiçi bir platform) 'dir.
  • Kaydedilmiş durumdaki dosyalar Git dizininde bulunur.

Temel Git iş akışı

Git Sürüm Kontrol Sistemiyle çalışmak şuna benzer:

Git temel iş akışı diyagramı
  1. Çalışma dizinindeki dosyaları değiştirin.

    Değiştirdiğiniz herhangi bir dosyanın, değiştirilmiş durumda bir dosya haline geleceğini unutmayın .

  2. .gitDizine uygulamak istediğiniz dosyaları seçmeli olarak hazırlayın .

    Hazırlama alanına hazırladığınız (eklediğiniz) herhangi bir dosyanın, aşamalı durumda bir dosya haline geleceğini unutmayın .

    Ayrıca, hazırlanmış dosyaların henüz .gitveritabanında olmadığını unutmayın.

    Hazırlama, hazırlanmış dosya hakkındaki bilgilerin .githavuzdaki bir dosyaya ("dizin" adı verilir) dahil edilmesi anlamına gelir .

  3. Hazırladığınız dosya (lar) ı .gitdizine kaydedin . Yani, hazırlanan dosyaların anlık görüntüsünü .gitveritabanında kalıcı olarak depolayın .

    .gitDizine kaydettiğiniz herhangi bir dosya sürümünün kaydedilmiş durumda bir dosya haline geleceğini unutmayın .

Şimdiye kadarki öz

Şimdiye kadarki tartışmaların uzun ve kısası, Git'in yetkin sürüm oluşturma, dosya yönetimi ve dağıtımı için mükemmel bir sürüm kontrol sistemi olmasıdır. Git'i verimli bir şekilde nasıl kullanacağınızı öğrenmek için bu basit kılavuzu inceleyin.

Ancak bir saniye bekleyin, Git bir proje dosyasının farklı sürümlerini etkili bir şekilde yönetmeye ve dağıtmaya yardımcı oluyorsa GitHub'ın amacı nedir?

GitHub Sade

GitHub, kullanıcıların Git depolarını barındırabileceği web tabanlı bir platformdur. Herhangi bir zamanda herhangi biriyle projeler üzerinde kolay paylaşım ve işbirliğini kolaylaştırmanıza yardımcı olur.

GitHub ayrıca, başka bir kullanıcının deposundaki dosyaları düzenlemenin güvenli bir yolunu sağlayarak açık kaynaklı projelere daha geniş katılımı teşvik eder.

GitHub'da bir Git deposu barındırmak (veya paylaşmak) için aşağıdaki adımları izleyin:

1. Adım: GitHub hesabı için kaydolun

GitHub'da barındırmaya başlamanın ilk adımı kişisel bir hesap oluşturmaktır. Kaydolmak için resmi kayıt sayfasını ziyaret edin.

Adım 2: GitHub'da bir uzak depo oluşturun

Bir hesaba kaydolduktan sonra, paylaşmak istediğiniz Git deposu için GitHub'da bir ana sayfa (depo) oluşturun.

Adım 3: Projenin Git dizinini uzak depoya bağlayın

Projeniz için uzak bir depo oluşturduktan sonra, proje .gitdizinini - sisteminizde yerel olarak bulunan - GitHub'daki uzak depoya bağlayın.

Uzak depoya bağlanmak için, yerel terminaliniz aracılığıyla paylaşmak istediğiniz projenin kök dizinine gidin ve şunu çalıştırın:

git remote add origin //github.com/yourusername/yourreponame.git

Not:

  • yourusernameYukarıdaki kodu GitHub kullanıcı adınızla değiştirin .

    Aynı şekilde, yourreponamebağlanmak istediğiniz uzak deponun adıyla değiştirin .

  • Yukarıdaki komut, git'in belirtilen URL'yi yerel projeye yerel dizinin etkileşim kurabileceği bir uzak başvuru olarak eklemesi gerektiğini belirtir ..git
  • Yukarıdaki originkomuttaki seçenek, Git'in uzak deponuzu barındıran sunucuya verdiği varsayılan addır (kısa bir ad).

    Yani, sunucunun URL'si yerine Git, kısa adı kullanır origin.

  • Sunucunun varsayılan ismine bağlı kalmak zorunlu değildir. Eğer yerine başka bir isim tercih ediyorsanız origin, sadece yerine originadını git remote addtercih ettiğiniz herhangi bir adla yukarıdaki komuta.
  • Bir sunucunun kısa adının (örneğin   origin) özel bir şey olmadığını asla unutmayın! Yalnızca - yerel olarak - sunucunun URL'sine kolayca başvurmanıza yardımcı olmak için vardır. Bu nedenle, kolayca başvurabileceğiniz kısa bir adla değiştirmeyi hissedin.
  • Mevcut herhangi bir uzak URL'yi yeniden adlandırmak için şu git remote renamekomutu kullanın :
git remote rename theCurrentURLName yourNewURLName
  • Herhangi bir uzak depoyu klonladığınızda (indirdiğinizde), Git o deponun URL'sini otomatik olarak adlandırır origin. Ancak git clone -o yourPreferredNamekomutla farklı bir ad belirtebilirsiniz .
  • Takma adlar için depolanan tam URL'yi görmek için command komutunu originçalıştırın git remote -v.

4. Adım: Bağlantıyı onaylayın

Git dizininizi uzak depoya bağladıktan git remote -vsonra, komut satırında çalıştırarak bağlantının başarılı olup olmadığını kontrol edin .

Daha sonra, görüntülenen URL'nin bağlanmayı düşündüğünüz uzak URL ile aynı olduğunu onaylamak için çıktıyı kontrol edin .

Not:

  • HTTPS URL'si yerine SSH URL'sini kullanarak bağlanmak istiyorsanız "SSH ile Bağlanma" makalesine bakın.
  • Ancak, kullanılacak uzak URL'den emin değilseniz, "Hangi uzak URL'yi kullanmalıyım?" makale.
  • Uzak URL'nizi değiştirmek istiyor musunuz? Bir uzaktan kumandanın URL'sini değiştirmek mükemmel bir kılavuzdur.

Adım 5: Uzak depoya yerel bir Git deposu gönderin

Yerel dizininizi uzak depoya başarıyla bağladıktan sonra, yerel projenizi yukarı akışa itmeye (yüklemeye) başlayabilirsiniz.

Projenizi başka bir yerde, herhangi bir .gituzak depoda paylaşmaya hazır olduğunuzda, Git'e yerel dizininizdeki tüm işlemlerinizi, şubelerinizi ve dosyalarınızı uzak depoya itmesini söyleyin .

Yerel bir Git dizinini uzak bir depoya yüklemek (göndermek) için kullanılan kod sözdizimi git push -u remoteName branchName.

Yani, yerel .gitdizininizi göndermek için ve uzak URL'nin kısa adının "kaynak" olduğunu varsayarak şunu çalıştırın:

git push -u origin master

Not:

  • Yukarıdaki komut, git'in yerel ana dalınızı origin adlı URL'de bulunan uzak ana dala itmesi gerektiğini ima eder .
  • Teknik olarak, originseçeneği uzak deponun URL'si ile değiştirebilirsiniz. Unutmayın, originseçenek yalnızca yerel .gitdizininize kaydettiğiniz URL'nin bir takma adıdır .
  • -uBayrak (memba / izleme referans bayrak) otomatik olarak bağlayan .gituzaktan şube ile dizinin yerel şubesi. Bu, git pullherhangi bir argüman olmadan kullanmanıza izin verir .

6. Adım: Yüklemeyi onaylayın

Son olarak, Git'in yerel Git dizininizi uzak depoya başarıyla ittiğini doğrulamak için GitHub depo sayfanıza geri dönün.

Not:

  • Değişikliklerin yansıtılması için uzak deponun sayfasını yenilemeniz gerekebilir.
  • GitHub ayrıca uzak deponuzu işlevsel bir web sitesine dönüştürmek için ücretsiz isteğe bağlı bir tesise sahiptir. Aşağıda "nasıl" olduğunu görelim.

Web sitenizi GitHub sayfalarıyla yayınlayın

Projenizi uzak deponuza gönderdikten sonra, web üzerinde şu şekilde kolayca yayınlayabilirsiniz:

  1. Projenizin ana HTML dosyasının adının olduğundan emin olun index.html.
  2. GitHub'ın web sitesi platformunda, yayınlamak istediğiniz projenin havuzuna gidin ve havuzun ayarlar sekmesine tıklayın .
  3. Aşağı kaydırarak GitHub Sayfalar bölümünde ve değişim Kaynak gelen şube hiçbiri için usta .
  4. Daha sonra, "Siteniz // kullanıcı-adınız.github.io/ your- github-repo-name/ adresinde yayınlandı" şeklinde bir bildirim görüntülenecektir.
  5. Artık projenizi belirtilen URL'de görüntüleyebilir ve duyurabilirsiniz.

Bu bölüm sadece projenizi GitHub ile yayınlamanın yüzeyini çizdi. GitHub sayfaları hakkında daha fazla bilgi edinmek için bu "GitHub Sayfaları ile Çalışma" belgelerine bakın.

Kısacası

GitHub, Git depolarını barındırmak (veya paylaşmak) için çevrimiçi bir platformdur. Projeler üzerinde herhangi bir yerde, herhangi bir zamanda, herhangi biriyle kolayca işbirliği yapmanıza yardımcı olur.

Hala şüpheniz mi var?

Git ve GitHub arasındaki ince çizgi konusunda hala kafanız karışıyor mu? Endişelenme - seni korudum. Aşağıda Git ve GitHub arasındaki beş temel fark bulunmaktadır.

Fark 1: Git ve GitHub - Birincil işlev

Git , bir dosyanın (veya dosya kümesinin) farklı sürümlerini kaydeden dağıtılmış bir sürüm kontrol sistemidir. Kullanıcıların herhangi bir zamanda kaydedilmiş sürümlere erişmelerine, karşılaştırmalarına, güncellemelerine ve dağıtmalarına olanak tanır.

Ancak GitHub , esas olarak Git depolarını çevrimiçi olarak barındırmak için bir barındırma platformudur. Kullanıcıların uzaktaki havuzlarını gizli tutmalarını veya ortak çalışmalar için açık tutmalarını sağlar.

Fark 2: Git ve GitHub - İşlem platformu

Kullanıcılar Git'i yerel makinelerine kurar ve çalıştırır. Bu, Git'in işlemlerinin çoğunun internet olmadan gerçekleştirilebileceği anlamına gelir.

Ancak GitHub, yalnızca çevrimiçi olarak çalışan web tabanlı bir hizmettir. Bu, GitHub'da herhangi bir şey yapmak için internete ihtiyacınız olduğu anlamına gelir.

3. Fark: Git ve GitHub - Mucitler

Linus Torvalds, Git'in geliştirilmesine Nisan 2005'te başladı.

Chris Wanstrath, PJ Hyett, Tom Preston-Werner ve Scott Chacon, Şubat 2008'de GitHub.com'u kurdu.

Fark 4: Git ve GitHub - Bakımcılar

Temmuz 2005'te Linus Torvalds, Git'in bakımını o zamandan beri baş bakımcı olan Junio ​​C. Hamano'ya devretti.

Ve Microsoft, GitHub'ı Ekim 2018'de satın aldı.

Fark 5: Git ve GitHub - Rakipler

Git'in popüler alternatifleri Mercurial, Team Foundation Version Control (TFVC), Perforce Helix Core, Apache Subversion ve IBM Rational ClearCase'dir.

GitHub'ın en yakın rakipleri GitLab, Bitbucket, SourceForge, Cloud Source Repositories ve AWS CodeCommit'tir.

Neticede

Git ve GitHub, dosyaları yönetmenize ve barındırmanıza yardımcı olan iki farklı varlıktır. Başka bir deyişle, Git dosya sürümlerini kontrol etmeye hizmet ederken GitHub, Git depolarını barındırmak için bir platformdur.

Yararlı kaynak

  • Git nasıl kullanılır - Harika ipuçları içeren çarpıcı bir rehber