-
1. Başlangıç
- 1.1 Sürüm Denetimi
- 1.2 Git’in Kısa Tarihçesi
- 1.3 Git Nedir?
- 1.4 Komut Satırı
- 1.5 Git’i Yüklemek
- 1.6 Git’i İlk Defa Kurmak
- 1.7 Yardım Almak
- 1.8 Özet
-
2. Git Temelleri
-
3. Git Dalları
- 3.1 Dallar
- 3.2 Kısaca Dallandırma ve Birleştirme Temelleri
- 3.3 Dal Yönetimi
- 3.4 İş Akışı Dallandırması
- 3.5 Uzak Dallar
- 3.6 Yeniden Temelleme (rebase)
- 3.7 Özet
-
4. Bir Sunucuda Git Kurma
- 4.1 İletişim Kuralları (Protocols)
- 4.2 Bir Sunucuda Git Kurma
- 4.3 SSH Ortak Anahtarınızı Oluşturma
- 4.4 Sunucu Kurma
- 4.5 Git Cini (Daemon)
- 4.6 Akıllı HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Üçüncü Taraf Barındırma (Hosting) Seçenekleri
- 4.10 Özet
-
5. Dağıtık Git
- 5.1 Dağıtık İş Akışları
- 5.2 Projenin Gelişiminde Rol Almak
- 5.3 Bir Projeyi Yürütme
- 5.4 Özet
-
6. GitHub
- 6.1 Bir Projeye Katkıda Bulunmak
- 6.2 Proje Bakımı
- 6.3 Kurumsal Yönetim
- 6.4 GitHub’ı otomatikleştirme
- 6.5 Özet
-
7. Git Araçları
- 7.1 Düzeltme Seçimi
- 7.2 Etkileşimli İzlemleme (Staging)
- 7.3 Saklama ve Silme
- 7.4 Çalışmanızı İmzalama
- 7.5 Arama
- 7.6 Geçmişi Yeniden Yazma
- 7.7 Reset Komutunun Gizemleri
- 7.8 İleri Seviye Birleştirme
- 7.9 Rerere
- 7.10 Git’le Hata Ayıklama
- 7.11 Alt Modüller
- 7.12 Demetleme (Bundling)
- 7.13 Git Nesnesini Değiştirme
- 7.14 Kimlik Bilgisi Depolama
- 7.15 Özet
-
8. Git’i Özelleştirmek
- 8.1 Git Yapılandırması
- 8.2 Git Nitelikleri
- 8.3 Git Kancaları (Hooks)
- 8.4 Bir Örnek: Mecburi Git Politikası
- 8.5 Özet
-
9. Git ve Diğer Sistemler
- 9.1 İstemci Olarak Git
- 9.2 Git’e Geçiş
- 9.3 Özet
-
10. Dahili Git Ögeleri
- 10.1 Tesisat ve Döşeme (Plumbing ve Porcelain)
- 10.2 Git Nesneleri
- 10.3 Git Referansları
- 10.4 Packfiles
- 10.5 Refspec
- 10.6 Transfer Protokolleri
- 10.7 Bakım ve Veri Kurtarma
- 10.8 Ortam Değişkenleri
- 10.9 Özet
-
A1. Ek bölüm A: Diğer Ortamlarda Git
- A1.1 Görsel Arayüzler
- A1.2 Visual Studio ile Git
- A1.3 Visual Studio Code ile Git
- A1.4 Eclipse ile Git
- A1.5 Sublime Text ile Git
- A1.6 Bash ile Git
- A1.7 Zsh ile Git
- A1.8 PowerShell ile Git
- A1.9 Özet
-
A2. Ek bölüm B: Git’i Uygulamalarınıza Gömmek
- A2.1 Git Komut Satırı
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Ek bölüm C: Git Komutları
- A3.1 Kurulum ve Yapılandırma Komutları
- A3.2 Proje Oluşturma Komutları
- A3.3 Kısaca Poz (Snapshot) Alma
- A3.4 Dallandırma ve Birleştirme Komutları
- A3.5 Projeleri Paylaşma ve Güncelleme Komutları
- A3.6 İnceleme ve Karşılaştırma Komutları
- A3.7 Hata Ayıklama (Debugging) Komutları
- A3.8 Yamalama (Patching)
- A3.9 E-Posta Komutları
- A3.10 Harici Sistemler
- A3.11 Yönetim
- A3.12 Tesisat (Plumbing) Komutları
4.2 Bir Sunucuda Git Kurma - Bir Sunucuda Git Kurma
Bir Sunucuda Git Kurma
Şimdi kendi sunucunuzda bu protokoller üzerinde çalışan bir Git servisi kurmayı ele alacağız.
Not
|
Burada, temel ve basitleştirilmiş kurulumları yapmak için gereken komutları ve adımları Linux tabanlı bir sunucuda göstereceğiz, ancak bu servisleri macOS veya Windows sunucularında çalıştırmak da mümkündür. Aslında altyapınız içinde canlı bir sunucu kurmak, güvenlik önlemlerinde veya işletim sistem araçlarında farklılıkları beraberinde getirecektir, ancak nasıl yapılacağı konusunda genel olarak fikir sahibi olacağınızı umuyorum. |
Herhangi bir Git sunucusunu başlangıçta kurabilmek için mevcut bir repoyu yeni bir yalın repo (bare repository) olmak üzere (çalışma dizini içermeyen bir repo) dışa aktarmanız gerekir.
Bunu yapmak oldukça basittir.
Yeni bir yalın repo oluşturmak üzere reponuzu kopyalamak için kopyalama komutunu --bare
seçeneği ile çalıştırırsınız.
Geleneksel olarak, yalın repo dizin adları, .git
soneki ile biter.
Şu şekildedir:
$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.
Artık my_project.git
dizininde Git dizin verilerinin bir kopyasına sahip olmalısınız.
Bu, şuna benzer bir şeye karşılık gelir:
$ cp -Rf my_project/.git my_project.git
Yapılandırma dosyasında birkaç küçük fark vardır, ancak sizin amacınız için bu neredeyse aynı şeydir. Çalışma dizini olmadan yalnızca Git reposunu alır ve ona özel bir dizin oluşturur.
Yalın Repoyu Sunucuya Alma
Artık repo için bir yalın kopyaya sahip olduğunuza göre, yapmanız gereken tek şey onu bir sunucuya yerleştirmek ve protokollerinizi kurmaktır.
Diyelim ki SSH erişiminiz olan git.example.com
adında bir sunucu kurmuşsunuz ve tüm Git repolarınızı /srv/git
dizini altında saklamak istiyorsunuz.
Bu sunucuda /srv/git
dizinin bulunduğunu varsayarak, yeni reponuzu, yalın repoyu kopyalayarak aşağıdaki gibi kurabilirsiniz:
$ scp -r my_project.git user@git.example.com:/srv/git
Artık, o sunucudaki /srv/git
dizinine SSH tabanlı okuma erişimi olan diğer kullanıcılar, repoyu şu komutu çalıştırarak kopyalayabilir:
$ git clone user@git.example.com:/srv/git/my_project.git
Eğer /srv/git/my_project.git
dizinine yazma erişimine sahip bir kullanıcı, sunucuya SSH ile bağlanırsa, otomatik olarak itme erişimine de sahip olacaktır.
git init
komutunu --shared
seçeneği ile çalıştırırsanız, Git otomatik olarak bir repoya grup yazma izinlerini ekler.
Bu komutu çalıştırarak, bu süreçte hiçbir katkı, referans vb. yok edilmeyecektir.
$ ssh user@git.example.com
$ cd /srv/git/my_project.git
$ git init --bare --shared
Bir Git reposunu almanın, yalın bir sürüm oluşturmanın ve iş arkadaşlarınızla birlikte SSH erişimine sahip olduğunuz bir sunucuya yerleştirmenin ne kadar kolay olduğunu gördünüz. Şimdi aynı projede işbirliği yapmaya hazırsınız.
Birkaç kişinin erişimi olan kullanışlı bir Git sunucusunu çalıştırmak için yapmanız gereken tek şey budur. Sadece bir sunucuda SSH erişimine sahip hesaplar ekleyin ve tüm bu kullanıcılara okuma ve yazma erişimi veren yalın bir repoyu bir yere yerleştirin. Artık çalışmaya hazırsınız.
Sonraki birkaç bölümde, daha karmaşık kurulumlara nasıl genişleyeceğinizi göreceksiniz. Bu mevzu, her bir kullanıcı için hesap oluşturmak zorunda kalmadan, repolara genel okuma erişimi eklemek, ağ arayüzleri kurmak ve daha fazlasını içerecek. Yine de birkaç kişiyle özel bir projede işbirliği yapmak için ihtiyacınız olan tek şey bir SSH sunucusu ve bir yalın repodur.
Ufak Kurulumlar
Eğer küçük bir ekip veya organizasyonunuzda Git’i denemek için sadece birkaç geliştiriciniz varsa, işler sizin için basit olabilir. Git sunucusu kurmanın en karmaşık yönlerinden biri kullanıcı yönetimidir. Bazı repoların belirli kullanıcılar için salt okunur, diğerleri için ise okuma/yazma izinli olmasını istiyorsanız, erişim ve izinleri düzenlemek biraz daha zor olabilir.
SSH Erişimi
Eğer tüm geliştiricilerinizin zaten SSH erişimine sahip olduğu bir sunucunuz varsa, en kolayı ilk repoyu orada kurmaktır, çünkü (geçen bölümde anlattığımız gibi) neredeyse hiç iş yapmanıza gerek yoktur. Eğer repolarınızda daha karmaşık erişim kontrolü türü izinler olmasını istiyorsanız, bunları sunucunuzun işletim sisteminin normal dosya sistem izinleri ile yönetebilirsiniz.
Eğer repolarınızı, yazma erişimi vermek istediğiniz herkesin hesap sahip olmadığı bir sunucuya koymak istiyorsanız, o zaman onlar için SSH erişimi kurmalısınız. Bu işlemi yapacak bir sunucunuz varsa, zaten bir SSH sunucusu kurulu olduğunu ve sunucuya erişim sağlamak için bu yöntemi kullandığınızı varsayıyoruz.
Takımınızdaki herkese erişim sağlamanın birkaç yolu vardır.
İlk olarak, herkes için birer hesap açaabilirsiniz, bu basit ancak sıkıcı olabilecek bir iştir.
Her yeni kullanıcı için adduser
(veya olası alternatif useradd
) komutunu çalıştırmak ve geçici şifreler belirlemek istemeyebilirsiniz.
İkinci bir yöntem, makinada tek bir git kullanıcı hesabı oluşturmak, yazma erişimine sahip olacak her kullanıcıdan bir SSH genel anahtarı göndermelerini istemek ve bu anahtarı yeni git hesabının ~/.ssh/authorized_keys
dosyasına eklemektir.
Artık, herkes git hesabı üzerinden bu makineye erişebilecektir.
Bu, herhangi bir şekilde katkı verilerini etkilemez (bağlandığınız SSH kullanıcısı, işlediğiniz katkıları etkilemez).
Bunu yapmanın başka bir yolu da SSH sunucunuzun bir LDAP sunucusu veya zaten kurulu olan başka bir merkezi kimlik doğrulama kaynağından kimlik doğrulamasını yapmasını sağlamaktır. Her kullanıcı makineye kabuk erişimi alabildiği sürece, aklınıza gelebilecek herhangi bir SSH kimlik doğrulama mekanizması çalışmalıdır.