Kendi Git Serverı'nızı Kurun !

Kendi Git Serverı'nızı Kurun !

Bu Yazımızda, Adını Bir Hayli Fazla Duyduğumuz git , GitHub ve GitLab'ı Detaylıca İnceleyip, Lokalde Kendi git-Server'ımızı Nasıl Kuracağımızı Öğreneceğiz.



Şuan Dünya'da En Yaygın Kullanılan Modern Versiyon Kontrol Sistemidir.

Bir Versiyon Kontrol Sistemi ; Bir Proje, Dökümantasyon , Makale vs. Yazıldığında ; Sistemin Projeye Entegre Edildiği Andan İtibaren ,Yapılan Tüm Değişiklikleri Algılar, Saklar ve Kullanıcılara Detaylı Olarak Raporlar. Aynı Zamanda Projede Rollere Dayalı Toplu Çalışma İmkanı Sağlamakla Birlikte, Üzerinde Çalışılan Projenin Farklı Versiyonlarının Oluşturulmasına ve Bu Versiyonlar Arasında da Rahatlıkla Geçiş Yapılabilmesini Sağlar. Versiyon Kontrol Sistemleri , Sadece Yazılım Sektörü Projeleri ile Özdeşleşmiş Olsalar da ; Aslında Diğer Sektörlerde de Rahatlıkla Kullanılabilir.

Burada Git'i "En Yaygın Kullanılan" Olarak Vurguladım Çünkü Subversion , Microsoft Team Foundation Server (TFS) , Mercurial , CVS , Perforce, Bazaar , AWS Code Commit , Helix VCS Gibi Daha Birçok Versiyon Kontrol Sistemi Bulunmaktadır.

Fakat ; Çalışma Sistemi , Open Source Olması , Esnekliği , Güvenilirliği ve En Önemlisi Yüksek Performansı Nedeniyle Git , Gerek Open Source , Gerek İse Ticari Amaçlı Yazılım Projelerinde Oldukça Yaygın Kullanılmaktadır. Hatta O Kadar Yaygın Ki ; xCode , Visual Studio , Android Studio vs. Platformlarında Proje Oluşturulurken ; Oluşturulacak Olan Projeyi Lokalde Source Control Altında Geliştirmeye İmkan Tanıyan "Create Git Repository" Seçeneği Bulunmaktadır.

Git , İlk Olarak 2005 Yılında Linux İşletim Sisteminin de Yaratıcısı Olan "Linus Torvalds" Tarafından C Programlama Dilinde Open Source Olarak Geliştirilmeye Başlandı.

Bu Sisteme Neden Git Adının Verildiği Konusunda Birçok Farklı Görüş Olsa da ; Git Resmi Websitesi'nde İsim Açıklaması Olarak Yer Alan : "git - the stupid content tracker" Cümlesi , Aslında Git'in Çalışma Prensibini İronik Bir Şekilde Açıklamaktadır. Çünkü Git , Kendilerini "Smart" Olarak Tanıtan Diğer Versiyon Kontrol Sistemlerinin Aksine Dosyaların İsimleri , Tipleri veya Boyutları ile İlgilenmez . Hatta Git ; Projeye Eklenen Dosyaların İçerik Tipleriyle de İlgilenmez. Git Sadece Tüm Dosya İçeriklerinin Bütünlüğüyle İlgilenir.

Diğer Versiyon Kontrol Sistemleri ; Projede Yapılan Tüm Değişiklikleri Dosya Bazlı Olarak Liste Şeklinde Saklar ve Dosyalarda Yapılan Her Bir Değişiklik (Silme , Ekleme , Güncelleme) Sonrasında, Yapılan Tüm Değişiklikler Tekrar Dosyalar Bazında Her Dosya İçin Ayrı Ayrı Üzerine Yazılarak Tutulur. Bu Tür Kontrol Sistemi Yaygın Olarak Delta-Based Version Control Şeklinde Adlandırılır.

Delta-Based Version Control
Resim-1 : Delta-Based Version Kontrol Sistemi

Git ise Datayı Daha Farklı ve Kendine Has Bir Yöntem Kullanarak Saklar. Git ; Projenin Tüm Dosyalarının Birnevi Anlık Fotoğrafını Çeker (Snapshot) ve Tüm Datayı Minyatür Bir Dosya Sisteminin Snapshot'ları Şeklinde Saklar. Projede Herhangi Bir Dosyada Bir Değişiklik Yapıldığında Tüm Dosyaların O Andaki Görünümünü Alır ve O Snapshot'a Ait Bir Referansı Saklar. Eğer Dosya(lar)da Bir Değişiklik Yapılmamışsa, O Dosyanın Tekrar Tekrar Anlık Görüntüsünü Alıp Saklamaz ; Zaten Önceden Tuttuğu Snapshot'ı Referans Olarak Tekrar Getirir.

Snapshots System git
Resim-2 : Git Snapshot Version Kontrol Sistemi


Yani Git, Tüm İçerikleri ve Sakladığı Datayı "Anlık Görüntü Akışı" Şeklinde Ele Alır. Aynı Zamanda Yapılan Tüm İşlemler Lokalde Yapıldığından ; Örneğin Projenizin Dosya Geçmişine Bakmak İstediğinizde Git ; Server'dan Geçmişi Getirip Listelemeye İhtiyaç Duymadan , Lokal Veritabınından Dosya Geçmişinizi Size Getirir ve Listeler. Yani Siz İnternete Bağlı Olmadan , Bir Uçakta Bile Projenizi Geliştirmeye ; Yaptığınız Değişikliklerinizi Commit Etmeye Devam Edebilirsiniz.
İlk Bölümde Git ve Çalışma Prensibinden Detaylıca Bahsettik. Artık Git'i Yükleyip Aktif Olarak Kullanmaya Başlayabiliriz.
Şunu Unutmayalım ki ; Git Tüm İşletim Sistemlerinde Aynı Şekilde ve Aynı Komutlarla Çalışır. Sadece Hangi İşletim Sistemini Kullanacaksanız , O işletim Sistemi İçin Git 'i Bilgisayarınıza İndirmeniz Gerekiyor. Ben Bu Yazıda İşlemlerimi Windows 10 İşletim Sisteminde Gerçekleştireceğim.

Eğer Git'i Yüklemediyseniz Burayı Tıklayarak Son Sürümü İndirebilirsiniz. Git 'i İndirdikten Sonra Kullanabilmek İçin :

-> Linux/Unix ve Mac OS X İşletim Sistemleri İçin Terminal
-> Windows 10 İçin PowerShell , Windows Command veya Git Bash 'i Kullanabilirsiniz.

NOT : Git Bash : Git'i Windows'ta Yüklediğiniz Andan İtibaren Bilgisayarınızın Herhangi Bir Yerinde veya Bir Klasörün İçerisinden Sağ Tıklayıp "Git Bash Here" Seçeneğini Tıklayıp Çalıştırabileceğiniz Git Komut Sistemidir. Bu Anlatımda Git Komutlarımı Direk Git Bash Kullanarak Yazacağım.

Git'i Yükledikten Sonra İlk İş Olarak Git Kullanıcı Adı ve Git Email Bilgilerini Yazmamız Gerekiyor. Git Bu Bilgileri Kullanarak Tüm Rol ve Kullanıcı İşlemlerini Gerçekleştirir. Masaüstünde Sağ Tıklayıp Git Bashi Açarak Git'i Kulllanmaya Başlayalım.

Git Kullanıcı Bilgilerinizi Aşağıdaki Kod Satırında Olduğu Gibi, Kendi Kullanıcı Adınızı ve Şifrenizi Yazıp Enter Tuşuna Basarak Güncelleyin.


İlk Bölümde Git'in Bir Projede Yapılan Tüm Değişiklikleri ve Yapılmış Olan Tüm İşlemleri Lokalde Sakladığını ve Kullanıcı Rolleri de Dahil Olmak Üzere Tüm İşlemleri Lokalde Bu Bilgileri KullanaraK Gerçekleştirdiğinden Bahsettik.İşte Git'in Tüm Bu Bilgileri Sakladığı ve İşlemleri Gerçekleştirdiği Data Yapısına Repository Adı Verilir.

Git Bilgilerimizi de Güncelledikten Sonra Artık İlk "Git Repository" 'imizi Oluşturmak İçin Hazırız :

1 - Masaüstünde ya da Dilediğiniz Bir Yerde Yeni Klasör Oluşturun. Ve Klasörün Adını da Dilediğiniz Şekilde Değiştirin.

2 - Eğer Windows 10 Kullanıyorsanız ; Klasörün İçinden Sağ Tıklayıp Git Bash Here Seçin ve Git Bash'i Çalıştırın. Eğer Diğer Platformları Kullanıyorsanız Terminal ' den cd Komutuyla Oluşturmuş Olduğunuz Klasörün İçine Gidin.

3 - Aşağıdaki Kod Bloğunu Komut Satırına Girin ve Enter Tuşuna Basın :


-> Bu Komut ; Bizim İlk Git Repository 'mizi Oluşturmamızı Sağladı ve Klasörümüzün İçerisine Git 'in Kullanacağı ve Tüm İşlemlerini Gerçekleştireceği ".git" Adında Yeni Bir Klasör Oluşturdu.

4 - Şuan Oluşturduğumuz Repository Boş Durumda . Çünkü Henüz İçerisine Herhangi Bir Dosya Atmadık . Şimdi Oluşturduğumuz Klasörün İçerisine (.git Klasörü ile Aynı Directory'e) Boş Bir Text Dosyası Atın (Örnek Olarak "deneme.txt" Adında Boş Bir Text Dosyası Atacağım Ben de) ve Attıktan Sonra Yine Aynı Klasörün İçerisinden Komut Sistemini Açın ve Aşağıdaki Komutu Yazıp Enter Tuşuna Basın :


-> Bu Komut Bize Yapmış Olduğumuz Tüm Değişiklikleri (Dosya Ekleme - Silme , Güncelleme vs ) Listeler . Bu Komutun Çalıştırıldıktan Sonra Çıktısı :


Komut Çıktısından da Anlaşıldığı Üzere Git , Bu Klasörde (Repository) Etkin Bir Biçimde Çalışıyor ve Projede Yapılan Tüm Değişiklikleri Artık Algılıyor ve Lokalde Kaydediyor.

Burada Git Kullanılırken Bilinmesi Gereken Önemli Terimler : branch , commit , push, pull ve clone .
-> branch : Branchlar , Git Çalışma Sisteminde Temel Bir Unsur Olup , Git'in Temel Kullanım Amacı Olan Versiyon Kontrol İşlemlerinde Bizlere Büyük Kolaylık Sağlar. Aslında Kaba Bir Tanımla branch ; Bir Projenin Geliştirilme Aşamasında Oluşturulan ve Birbirlerinden Bağımsız Olarak Geliştirilen Farklı Kopyalarıdır.

Komut Çıktısında da Görüldüğü Gibi "On branch master" Bizim master branch'nda Çalıştığımızı Gösteriyor.
master ; Git'in Default Olarak Oluşturduğu ve Protected (Korunmalı) Ana Branch'tır. İsteğe Dayalı Oluşturulacak İkinci Bir Branch , master Branch'ından Türetilir. Ve Git ; Projenin Beta Sürümünü Bulunduran master Branch'ından Yeni Bir Kopya Oluşturur. Kullanıcılar Yeni Oluşturulan ve master 'ın Birebir Kopyası Olan Bu Branch'ta, master'dan Bağımsız Bir Şekilde Projeyi Geliştirmeye Devam Ederken , Tüm İşlemleri master ile Diledikleri An Karşılaştırabilir , Projede Bir Hata Meydana Geldiğinde Projeyi İstedikleri Bir An'a Geri Alabilir veya File History'den O An'a Kadar Yapılan Tüm İşlemleri Görebilirler .

Yeni Branch'da Tüm Geliştirmeler ve Testler Bittiğinde ; Bu Branch ile master (Yetki Dahilinde) Git Tarafında Yapılacak "merge" İşlemi İle Birleştirilir (İki Branch Eşitlenir) ve master (Beta Sürüm) Hiç Bozulmadan Güncellenmiş ve Geliştirilmiş Olur. Kullanıcı , Dilediği ya da Hatasız Çalıştığını Düşündüğü Herhangi Bir Branch'dan Projenin Katı Bir Versiyonunu (tag) Oluşturur ya da İstek Dahilinde Daha Önce Oluşturduğu Bir Versiyona Geçiş Yapabilir . Git 'de, Oluşturulan Herhangi Bir Branch'dan veya master 'dan Birden Fazla Yeni Branch Türetilebilir.
-> commit : Oluşturduğumuz Repository'e Bir deneme.txt Dosyası Atıp $ git status Komutunu Çalıştırdık . Git Komut Çıktısı (Yukarıda) Bu Respository'e Bir Dosya Eklendiğini Algıladı ve Bize Şu Çıktıyı Verdi :

No commits yet

Untracked files:
(use 'git add <'file'>...' to include in what will be committed)
deneme.txt
nothing added to commit but untracked files present (use "git add" to track)

Çünkü Dosyamızı Henüz Repository'e Göndermedik . Repository Şuan Hala Boş Durumda . Git 'de Yaptığımız İşlemler Hemen Repository'e Gönderilmez. Bu İşlem Güvenlik Amaçlı 3 Aşamada Gerçekleştirilir . İlk Aşamada Önce Repository'e Gönderilmek İstenen Dosyalar Belirlenir ve $ git add 'file' Komutu ile Repository'e Gönderilmek Üzere Hazırlanır (Staged / Tracked).

Bu Komutta 'file' Kısmında (Uzantısı ile Birlikte) Dosya İsmi Belirtilmezse Git , Default Olarak Yapılan Tüm Değişiklikleri Repository'e Göndermek İçin Hazırlar.

Seçilen (Tracked) Tüm Bu Değişiklikler Bir Paket Halinde Toplanır ve Git Tüm Bu Değişiklik Paketine Daha Sonradan Görülebilmesi veya Karşılaşabilinecek Herhangi Bir Hata Sonrasında Projenin Bu İşlem Yapılmadan Hemen Önceki Haline Geri Alınabilmesi İçin Uniq Bir Id Atar ve Sizden de Bu Değişiklik Paketinde Neleri Değiştirdiğinize Dair Bir Mesaj Belirtmenizi İster. Bu İşleme Commit Adı Verilir.

O Halde Biz de Klasörümüzün İçerisinden Tekrar Komut Sistemini Açalım ve Aşağıdaki İşlemleri Uygulayarak Text Dosyamızı Repository'e Göndermek İçin Hazırlayalım :

-> İlk Önce Aşağıdaki Komutu Yazarak Dosyamızın Taşınacağını Git 'e Bildiriyoruz :


-> Daha Sonra Kontrol Etmek İçin $ git status Komutunu Tekrar Çalıştırıyoruz . Output Aşağıdaki Gibi Olacaktır :


-> Burada Dilerseniz $ git rm --cached 'deneme.txt' Komutu ile Dosyamızı Commit Edilecekler Listesinden Çıkarabiliriz (Unstage) . Artık Aşağıdaki Komutu Yazarak İlk Commit İşlemini Gerçekleştirebiliriz :


-> Şimdi Text Dosyamızı Açıp İçerisine Birşeyler Yazalım ve Dosyamızı Kaydettikten Sonra Aynı İşlemleri Sırasıyla Tekrar Gerçekleştirelim :


Görüldüğü Üzere Git, Arka Planda, Oluşturduğumuz Lokal Repository'de (Klasörde) Yapılan Tüm Değişikliklerde Aktif Olarak Çalışıyor. Aklınızı Şu Soruların Geldiğini Duyar Gibiyim :

" Peki Her Değişiklikten Sonra Komut Penceresini Açıp Git Komutlarını Yazmak mı Gerekiyor ? "
" Git Her Zaman Bu Şekilde mi Kullanılıyor ? "


Git Bu ve Bunun Gibi Daha Birçok İşlemi Kendine Özgü Git Komutlarını Kullanarak Gerçekleştirir . Aslında Şu Ana Kadar Yaptığımız Tüm İşlemler Git Komutlarını ve Çalışma Prensibini Açıklamak ve Anlatmak Amacıyla Yapılan İşlemlerdi. Çünkü Git'i İyi Anlarsak O'ndan Maksimum Verim Alır ve Yaptığımız Tüm İşlemleri İşin Mutfağını da Bilerek Gerçekleştirmiş Oluruz.

Dilerseniz Bu Şekilde de Çalışabileceğiniz Gibi ; Projenizin Bir Git Repository'si Olması Koşuluyla , Tüm Bu Git Komutlarını Sizin İçin Arka Planda Otomatik Olarak Yazıp Çalıştıran Birçok Uygulama / Code Editor / IDE (Integrated Development Environment) Mevcut . Bunlardan En Çok Kullanılanlardan Bazıları :

-> Masaüstü (Desktop) Uygulamalar : GitHub Desktop , SourceTree , Git GUI vb.
-> IDE / Code Editorler : Visual Studio Code , Visual Studio , Android Studio , xCode vb.

Tek Yapmanız Gereken Bu Uygulamaları Kullanarak Yeni Bir Git Repository Oluşturmak veya Var Olanı Klonlayıp Klonladığınız Klasörü Bu Uygulama / IDE 'leri Kullanarak Açmak. Git , Arka Planda Otomatik Olarak Devreye Girecek ve Yapılan Tüm İşlemleri Size Detaylıca Raporlayacaktır.

Son İşlem Olarak, Oluşturduğumuz Klasörü (Repository) Visual Studio Code veya Başka Bir Editör ile Açın. Yaptığınız Tüm Değişikliklerin Gösterildiğini ve Siz Değişiklik Yaptıkça Arka Planda Git'in Devreye Girip Komutlarının Otomatik Olarak Çalıştığını Göreceksiniz.
-> push : Git 'de 2. Aşama Olan Commit İşlemini Yaptık . Ama Tabiki Biz Şu Ana Kadar Kendi Oluşturduğumuz Lokal Bir Repository'de Çalıştık . Peki Ya Bu Projede Çalışan Bizim Dışımızda Başka Kullanıcılar da Olsaydı ?

O Zaman Bizim ; Tüm Bu Kullanıcıların Rol , Yetki ve Yaptığı İşlemleri Yönetecek , Karmaşıklığı ve Çakışmaları Önlemek Adına Tüm Kullanıcılardan Gelen Dosya ve Değişiklikleri Bir Yerde Toplayıp Derleyip Düzenleyip ; Her Kullanıcının Projenin Son Halini Çekebileceği Remote Server Gibi Çalışan Bir Ana Respository'e İhtiyacımız Olurdu. İşte Bu Repository'e Bare Repository Adı Verilir.
Bare Repository

Resim-3 : Git Bare (Remote) Repository Çalışma Prensibi

Bare Repository'lerde Git'in Kendisinin Kullanacağı Fiziksel Dosyaların Dışında Dosya Bulunmaz , Git'in Çalışma Prensibi Gereği, Tüm Kullanıcılar Lokalde Projenin Bir Klonunu Alıp Çalıştıkları İçin , Burada Repository'lerin Birnevi Log'ları Tutulur. İşte push İşlemi Bizim Yapmış Olduğumuz Tüm Commit(leri) Bu Remote (Uzak) Repository'e Gönderme İşlemidir.

-> pull : Remote Repository'den Projenin Son Halini Lokal Repository'e Çekme Komutudur.
-> clone : Remote Repository'i Yetki Dahilinde Lokalde Çalışmak İçin Kopyalama Komutudur.


Resim-3'te Bir Projenin Git Akış Diyagramı Görüntülenmektedir. Branch ve Versiyon Kontrol Yapılarını Daha İyi Kavramak Adına ; Birlikte Bu Diyagram Üzerinden Bu Projenin Versiyon Oluşturma Aşamalarını Yorumlayalım :
Git WorkFlow Sheme
Resim-4 : Git Versiyon Kontrol Akış Diyagramı

-> " Bu Projede ; Mavi Renk ile Gösterilmiş master branch'ından develop Adında Yeni Bir Branch Türetilmiş ve Bu Branch Üzerinden Bir Ekip Bu Projeyi Geliştirmeye Devam Ettiği Esnada, Projenin Beta Sürümünde Oldukça Önem Arz Eden Bir Hatanın Olduğu Farkedilmiş ve Bunu Düzeltmek Adına master 'dan hotfix Adında Yeni Bir Branch Daha Türetilmiş ve Bu Branchta Düzeltmeler Yapıldıktan Sonra , hotfix ve master Branchları merge Edilmiş ve Projenin Son Düzenlemelerini de Barındıran "v0.5" Versiyonu Çıkarılmış.

-> develop Branch 'ında Çalışan Diğer Ekip ise Bu Projeyi Geliştirmeye Devam Ederken ; Başka Bir Ekip , Projede Yer Alması Planlanan Ekstra Bir Özelliği Geliştirmek Adına , develop Branch'ından feature Adında Yeni Bir Branch Oluşturmuş ve Bu Branchta Yeni Eklenecek Özelliği Geliştirmiş ve Sonunda feature ve develop Branchları merge Edilerek , Projenin Ara Bir Versiyonu Olan "v1.0" 'ı Çıkarılmış. Ve En Son v1.0 'da Tüm Testler ve Geliştirmeler Tamamlandıktan Sonra , develop ve master branchları Son Kez merge Edilip En Son Versiyon Olan "v1" Ortaya Çıkarılmış.

-> Burada Vurgulanması Gereken En Önemli ise ; Git Branch Yapısı Sayesinde , Tüm Ekipler Aynı Projede , Birbirlerinin Yaptığı Değişikliklere Basmadan ve Birbirlerinin Çalışmasını Engellemeden Organize Bir Şekilde Bu Projeyi Geliştirip Ortaya Yeni Bir Versiyon Çıkardılar."

" Artık Git Çalışma Sistemi ve Repository / Bare Repository (Remote) Mantığı Hakkında Bilgi Sahibiyiz ve Lokalde Kendi Git Server'ımızı Kurmak İçin Bir Sonraki Aşamaya Geçebiliriz ".

Önceki Bölümde Bare (Remote) Repository Yapısından Bahsetmiştik . İşte GitHub ve GitLab Dünya'nın Dört Bir Yanındaki Yazılımcıları Buluşturan , Katılımcı Olarak (Contributor) Aynı Projelerde Yer Almalarını ve İster Open Source , İster Ticari Amaçlı Projeler Geliştirmelerini ve Versiyonlar Çıkarmalarını Sağlayan Dünya'nın En Büyük Proje Geliştirme Portallarıdır.

Burada Kullanıcılar Ücretsiz Bir Hesap Oluşturduktan Sonra Kendi Repository'lerini Oluşturur ve Diğer GitHub / GitLab Kullanıcılarını da Kendi Repository'lerine Contributor Olarak Davet Ederek Çoklu Ortamda Projelerini Geliştirirler.

GitHub ve GitLab Tüm Bu Kullanıcıların Remote Repository'lerini Kendi Serverlarında Onlar İçin Saklar ve Dünya Üzerindeki Tüm GitHub / GitLab Kullanıcılarının Katılımcı Olarak Dahil Oldukları Repository'lere Ait Lokalde Yaptıkları Tüm Geliştirmelerini GitHub / GitLab IP'leri Üzerinden Bu Remote Repository'lere Push Etmelerini Sağlar.
Biz de Bu Makalenin Esas Konusu Olan, Kendi Git Server'ımızı Kurmak Amacıyla , GitLab CE 'yi Üzerinde Ubuntu Yüklü Olan Bir Bigisayara Kurup ,GitLab Web Arayüzüne Statik Bir Lokal IP'den Erişim Sağlayıp , SSH Protokolü (Port 22) Üzerinden Lokal Cihazlar Arasında Veri / Dosya Paylaşımını Gerçekleştireceğiz. Yani Aslında GitLab'ı Tamamen Lokalde (Dış IP'lere Kapalı) Çalıştıracağız.
Önceki Etaplarda Git Çalışma Prensibini ve Repository Mantığını Gördük. Artık Lokalde Çalışacak Kendi GitLab Server'ımızı Rahatlıkla Kurabiliriz.

Bu Lokal Server Sayesinde Aynı Ağdaki Tüm Lokal Git Kullanıcılar Birbirlerinin Yetkiler Dahilinde Oluşturdukları Remote Repository'lere Erişme, Klonlama ve Değişiklik Yapma İmkanı Bulacaklar.

Bunun İçin İlk Yapmamız Gereken Şey : Dilerseniz Sadece Git Server Olarak Kullanacağınız Bir PC 'ye veya Virtual Box Kullanarak İşletim Sisteminiz Ne Olursa Olsun ,Kişisel Bilgisayarınızda Ayrı Bir Sanal Sürücü Oluşturup İçerisine Buradan Ubuntu OS Yüklemek Olacaktır.

NOT : Ubuntu Yüklemekte Zorluk Çekenler Bu Videoyu Takip Ederek Rahatlıkla Ubuntu'yu Yükleyebilirler.

Ubuntu'yu Kurduktan Sonra Terminali Açıp GitLab'ı Kurmak İçin Aşağıdaki Komutları Sırasıyla Çalıştırıyoruz :


Tüm Bu Komutları Sırasıyla Çalıştırdıktan Sonra Artık GitLab Başarıyla Yüklendi.

** Artık (Eğer Lokalde Yüklediyseniz) Aynı Ağda Olan Başka Bir PC'de Tarayıcıdan Yüklediğiniz Lokal IP yi Girerek GitLab Arayüzüne Ulaşabilirsiniz. (Örn http://192.168.2.138)
Eğer GitLab'a Yüklediğiniz PC'den Bağlanmak İsterseniz http://localhost dan GitLab'a Erişebilirsiniz.

** Eğer Server Üzerine Kurulum Gerçekleştirdiyseniz IP'den Ulaşabilirsiniz.

Artık GitLab Login Sayfası Tarayıcınızda Açıldı. Kullanıcı Adınıza "root" Yazın ve Kendinize Bir Şifre Oluşturarak Sisteme Giriş Yapın.

GitLab Bildirim Mailleri İçin SMTP Konfigürasyonu

Ubuntu'da root Kullanıcı Olarak "/etc/gitlab/gitlab.rb" Dosyanına Gidin ve Ayarlarınızı Kendi SMTP Ayarlarınız İle Değiştirin :


NOT : Gmail , Amazon SES , MailGun ve Diğer Mail Opsiyonları İçin Gerekli Bilgilere Buradan Ulaşabilirsiniz.

Değişikliklerden Sonra Termali Açın ve Aşağıdaki Komutu Çalıştırın :


Kurulumunuz Başarıyla Gerçekleşti. Artık Az Önce Kurmuş Olduğunuz GitLab Size Belirttiğiniz Mail Server ve Adres Üzerinden Bildirim Mailleri Gönderecektir. Artık Kurmuş Olduğunuz GitLab a Admin Area Yazan Kısımdan Kullanıcı Tanımlayabilir , Onlara Yetkiler Verebilir ve Yaptıkları Tüm İşlemleri (Oluşturdukları Repositoryler - Commitler - Pull Request - Merge Request vs.) Kolayca Takip Edebilirsiniz.
Son Aşamada Artık Bu Sistemi Kullanacak Her Bir Kullanıcı İçin SSH Key Oluşturup ve GitLab'da Tanımlayacağız. SSH Key Kullanmamın Temel Sebebi , Tüm Kullanıcılar Arasında Güvenli ve Hızlı Bir İletişim Sağlamak ve Her Push İşleminden Önce Tekrar Tekrar Şifre Girmelerini Engellemek.

SSH : HTTP Gibi Bir Data Paylaşım Protokolüdür ve 22 Portunu Kullanarak Bir Çeşit Tünelleme Sistemi İle Cihazlar Arası Data Transferi Sağlar.

Öncelikle Her Kullanıcı İçin SSH Key Oluşturmakla İşe Başlayalım :
Aşağıdaki Komutu Bu Sisteme Bağlanacak Her Bir Cihazda Çalıştırın ve Daha Sonra SSH Key'in Oluşturulacağı Yeri Seçin :


Artık GitLab a Bağlanacak Cihazlarınızın Belirttiğiniz Yerde .ssh Adında SSH Key Barındıran Bir Dosya Oluştu.(Dosya Görünmüyorsa Gizli Öğeleri Göster Seçeneğini Etkinleştirin)

Şimdi Bu .ssh Klasöründe id_rsa.pub Dosyasını Kullandığınız Herhangi Bir Text Editorde Açın ve Hepsini Kopyalayın. Sonra GitLab 'a Kendi Kullanıcı Adınız ve Şifreniz İle Giriş Yapın ve SSH Key's Kısmına Yapıştırın ve Kaydedin.

ÖNEMLİ : Her GitLab Kullanıcısı Ayrı Ayrı Kendi Kullanıcı Paneline Giriş Yaparak Kendi SSH Key'ini Paneline Eklemek Zorundadır.

GitLab SSH Key


Artık İlk Repository'mizi Oluşturmaya Hazırız . GitLab Kullanıcı Panelinize Gidin ve Yeni Bir Proje Oluşturun. Projenizi Oluşturduktan Sonra ; Proje URL'nizi SSH Seçerek Kopyalayın :

Project Clone With SSH Key


Şimdi Kullandığınız Editor'ü Açın (Ben Visual Studio Code Kullanıyorum) ve Ctrl + Shift + P Tuşlarına Basın ve Git Clone' u Seçin ve Repository'i Açın. Projeniz İçerisine Bir Dosya Atın , Değişiklikler Yapın Commit 'leyin ve Sol Alt Tarafta Bulunan Push Butonu ile Remote Repository'nize Değişikliklerinizi Gönderin.

Şimdi Tekrar GitLab'a Girin ve Proje Sayfanızı Açın. Değişikliklerinizin Orada Görüntülendiğini Göreceksiniz. Artık Projelerinizin Katı Versiyonlarını Oluşturabilir , Aradaki Farkları Listeleyebir , Branch Sistemi İle Branch larınızı Merge Edip Versiyon Oluşturabilirsiniz. Artık Lokalde Çalışan Bir Git Server'ınız Var:)

Bu Makale Hakkında Aklınıza Takılan Tüm Soru ve Sorunlar İçin Çekinmeden Yorum Yazabilir veya Bana Direkt Olarak İletişim Bilgilerimden Ulaşabilirsiniz.
Muhammed SEZGİN

Full Stack Software Developer

Kaynak : Git , GitLab , GitHub

Yorumlar

  • Muhammed SEZGİN
    unknown Yanıtla 2020-05-06 21:39:03
    Emeğinize sağlık.. Faydalı bilgiler için teşekkürler...

Yorum Yaz