Bir yazılım ekibinin git sürüm takip sistemini kullanarak ortak çalışması için pek çok senaryo var. Bu dokümanda çeşitli senaryolar ile GitHub üzerinden sürecin nasıl işlediğini özetleyeceğiz.
Senaryomuz şu şekilde gelişiyor:
ecylmz isimli geliştirici (GitHub hesabı kendi hesabında f adında bir proje oluşturuyor. Örneğin projeye aşağıdaki adresten erişebildiğini kabul edelim:
roktas isimli geliştirici (GitHub hesabı) bir aşamada projeye dahil olarak ecylmz ile birlikte çalışmaya başlıyor.
roktas proje üzerinde çalışmaya nasıl başlamalı?Projeyi oluşturan kişi ecylmz olduğuna göre roktas öncelikle f isimli projeyi ecylmz‘ın deposundan “fork” ederek almalı. Bu “fork” işlemi için GitHub’ın yardım sayfasında ayrıntılı bilgi bulabilirsiniz. Buna göre:
roktas ecylmz‘ın hesabındaki proje sayfasına giriyor.
Proje sayfasında görülen “Fork” butonuna tıklayarak projeyi kendi hesabına klonluyor. Artık roktas‘ın hesabında f isimli bir proje var.
roktas GitHub üzerinde oluşturduğu bu yeni depoyu makinesine alıyor:
roktas$ git clone git@github.com:roktas/f.git
roktas, kendi kopyası üzerinde çalıştığı esnada ecylmz‘ın yaptığı yeni değişiklikleri takip etmek için deposunda örneğin ecylmz isimli bir uzak başvuru oluşturarak bunu ilkliyor:
roktas$ git remote add ecylmz git://github.com/ecylmz/f.git
roktas$ git fetch ecylmz
Uzak başvuru adı olarak ecylmz dışında bir isim de seçilebilir. Burada önerilen yöntemin avantajı birden fazla uzak başvuru kullanıldığında her birinin hangi kaynaktan geldiğinin daha açık şekilde anlaşılabilmesidir.
roktas proje üzerinde bilinen şekilde çalışıyor; kodlama yapıyor, değişikliklerini kaydediyor ve GitHub’taki deposuna gönderiyor:
roktas$ ...
roktas$ git commit -a -m "falan düzeltme yapıldı"
roktas$ git push origin master
roktas projede yaptığı değişiklikleri ecylmz‘a nasıl göndermeli?roktas‘ın elindeki kopya GitHub’ın “fork” özelliğiyle ecylmz‘ın kopyasından türetildiğinden, GitHub roktas‘a yaptığı değişiklikleri ecylmz‘a iletmek için “Pull Request” adında bir kolaylık sunuyor. Buna göre:
roktas kendi proje sayfasına girerek “Pull Request” butonuna tıklıyor.
Açılan ileti penceresindeki ileti alanına uygun bir açıklama yazdıktan sonra ecylmz‘a ve isteğe bağlı olarak diğer alıcılara “yaptığım değişiklikleri kendi deponuza alın” isteğinde bulunuyor.
Bu isteği alan ecylmz roktas‘ın değişikliklerini kendi kopyasına uyguluyor.
roktas ecylmz‘ın değişikliklerini nasıl takip etmeli?roktas proje üzerinde çalışırken ecylmz da kendi kopyası üzerinde bazı değişiklikler yapıyor olabilir. roktas bu değişiklikleri şöyle almalı:
roktas kendi kopyasını hazırlarken oluşturduğu ecylmz dalını kullanarak ecylmz‘daki değişiklikleri indiriyor:
roktas$ git fetch ecylmz
İndirilen değişiklikleri kendi kopyasıyla birleştiriyor:
roktas$ git merge ecylmz/master