Forum: Projeler Genel RSS
git'i Pro Git kitabı ile anlamaya başladım
acehreli (Moderatör) #1
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4412 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: git'i Pro Git kitabı ile anlamaya başladım
Konuyu güzelce anlatan kitap şuymuş:

  http://progit.org/book/

Hepsini bitirmedim ama kafamda çok şey gelişmeye başladı. Bir kaç örnek:

- Proje github'da durmuyor, ve biz ona katkıda bulunmuyoruz. github'daki, projenin tek bir kopyası. Projenin her bir kopyası projenin kendisi kabul edilebiliyor.

- Projenin her kopyasının bütün proje olması nedeniyle bütün işlemler yerel olarak halledilebiliyor.

- Anlayamadığım bir kavram, "staging area" (hazırlık alanı) imiş. 'git add' dendiği zaman projeye yeni bir  dosya eklenmiyormuş; bir değişiklik, bu hazırlık alanına yerleştiriliyormuş. 'git commit', bu hazırlık alanındaki değişiklikleri projeye ekliyormuş. (Hazırlık alanının 'git commit'in -a seçeneği ile atlanabiliyor olması benim kafamdaki karışıklığı arttırmış.)

- turna'nın şimdiki düzeninde temel depo, acehreli'nin deposu. O yüzden geçende projeye eklemiş olduğum diğer katılımcıları sanırım oradan kaldırmam gerekiyor. Katılımcılar bana 'pull request' gönderecekler, ben de ondan sonra projeye alacağım.

Bu konuda şundan emin değilim:

a) Acaba önce kendi yerel kopyama 'pull edip' ondan sonra mı github'a 'push edeceğim' yoksa

b) 'pull request' github'a yapıldığı için doğrudan oraya mı 'pull edeceğim'?

Kitap çok güzel; yavaş yavaş öğreniyorum. :) Türkçe'si yokmuş daha... :-/

Ali
doganaydin #2
Kullanıcı başlığı: Doğan Aydın
Üye Şub 2011 tarihinden beri · 7 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Staging area değişen dosyaların sıraya alındığı bölümdür. Ama bu bölüm sadece yereldedir. Yani git add komutuyla eklediğiniz dosyalar githuba eklenmez. Bunun için git commit ve git push komutunu vermelisiniz. Eğer pull request ile çalışacaksanız başkalarını repoya eklemenize gerek yok. Tabii isterseniz eklersiniz fark etmiyor.
Tam olarak olmasa da (a) seçeneği izlemeniz gereken yol. Adım adım:
1-) pull request gönderilir.
2-) Gelen pull requestte yapmanız gereken işlemler gösterilir. Eğer git pull derseniz çakışmaları görmezden gelip gelen pull requesti direk birleştirir. Ama önce git fetch ile pull requesti yerel depoya ekleyip çakışmaları çözdükten sonra birleştirirseniz daha iyi olur. Yoksa program uçabilir.
3-)fetch komutuyla çektiğinizde değişiklikler direk master brancha gelmezler. Başka bir brancha yerleştirilirler. Sonra bu iki branch merge komutuyla birleştirilir. Yani:
a-) X deposu ana depodur. Y ve Z forklanmış halidir.
b-) Y deposu pullrequest gönderir.
c-) X deposu gelen pull requesti fetch ile yerel depoya çeker(Henüz githubtaki depoyu etkilememiştir) Sonra master branch ile pull requesti çektiğimiz branch karşılaştırılır, çakışmalar kontrol edilir, gerekirse düzenlemeler yapılır. İşlemler bittikten sonra hazır hale geldiği düşünülüyorsa bu branch master branch ile birleştirilir.(merge)
d-) Eğer gerekliyse git add komutuyla dosyalar eklenir, sonra bilindik git commit ve git push ile birleştirilmiş X deposu githuba gönderilir. İsterse Y deposu yeni depoyu çekip senkronize edebilir istemezse de sorun değil.
e-) X deposu Y deposundan aldığı değişiklikler ile yoluna devam eder.
acehreli (Moderatör) #3
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4412 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Teşekkürler. :) Anladığım biçimde tekrarlıyorum.

doganaydin:
Staging area değişen dosyaların sıraya alındığı bölümdür. Ama bu bölüm sadece yereldedir. Yani git add komutuyla eklediğiniz dosyalar githuba eklenmez. Bunun için git commit ve git push komutunu vermelisiniz.

Çünkü aslında 'git commit' de hâlâ yerel oluyor. Yerel depodan github'daki depoya taşımak için 'git push' gerekiyor.

Tam olarak olmasa da (a) seçeneği izlemeniz gereken yol. Adım adım:
1-) pull request gönderilir.

Bir tahminde bulunacağım: Eğer 'pull request' depoya gönderiliyorsa, github'daki depoya yapılacak ama ben yine de yerel depoma alabileceğim mi? :)

Yok eğer 'pull request' daha mantıklı olarak genelde projeye gönderiliyorsa, zaten istediğim kopyasına (örneğin yerel depoya) alabilirim.

2-) Gelen pull requestte yapmanız gereken işlemler gösterilir. Eğer git pull derseniz çakışmaları görmezden gelip gelen pull requesti direk birleştirir. Ama önce git fetch ile pull requesti yerel depoya ekleyip çakışmaları çözdükten sonra birleştirirseniz daha iyi olur. Yoksa program uçabilir.
3-)fetch komutuyla çektiğinizde değişiklikler direk master brancha gelmezler. Başka bir brancha yerleştirilirler. Sonra bu iki branch merge komutuyla birleştirilir. Yani:
a-) X deposu ana depodur. Y ve Z forklanmış halidir.
b-) Y deposu pullrequest gönderir.
c-) X deposu gelen pull requesti fetch ile yerel depoya çeker

Onu yapabilmek için 'git remote add' ile Y ve Z'yi eklemem gerekecek sanırım:

  http://progit.org/book/ch2-5.html

(Henüz githubtaki depoyu etkilememiştir) Sonra master branch ile pull requesti çektiğimiz branch karşılaştırılır, çakışmalar kontrol edilir, gerekirse düzenlemeler yapılır. İşlemler bittikten sonra hazır hale geldiği düşünülüyorsa bu branch master branch ile birleştirilir.(merge)
d-) Eğer gerekliyse git add komutuyla dosyalar eklenir, sonra bilindik git commit ve git push ile birleştirilmiş X deposu githuba gönderilir. İsterse Y deposu yeni depoyu çekip senkronize edebilir istemezse de sorun değil.
e-) X deposu Y deposundan aldığı değişiklikler ile yoluna devam eder.

Tekrar teşekkür...

Ali
doganaydin #4
Kullanıcı başlığı: Doğan Aydın
Üye Şub 2011 tarihinden beri · 7 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Githubta gördüğünüz pull request sadece bir bilgilendirme. Yani aslında ben size pull request gönderdiğimde ben size mesaj atıyorum "X deposu bak seni güncelledim gel al yamalarını" şeklinde. Sonra X deposu bu requesti kabul ettiğinde Y deposundaki değişiklikleri kendisi çekiyor. Remote eklemek zorunda değilsiniz remote kısayoldur sadece. Yani direk adresler üstünden de işlem yapabilirsiniz. Remote eklerseniz uzun uzun adres yazmak yerine git fetch doganaydin diyebilirsiniz. :)
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Projeler Genel RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-06-25, 19:09:43 (UTC -07:00)