Yerleşik geleneğe bağlı kalarak, sizi geleceğin kıdemli yazılım mühendisleri olarak selamlıyorum. Bugünün makalesi , Git'teki makaleminCennette yapılmış bir eşleşme: Git ve IntelliJ IDEA - 1 mantıksal uzantısıdır . Git ile ilgili yazıda komut satırında Git ile nasıl çalışılacağını anlattım. Bugün size IntelliJ IDEA'da hepsini nasıl yapacağınızı göstereceğim. Bir geliştirici olarak yolculuğumun başında komut satırını kullandım ve bunun için bir GUI'ye ihtiyacım olmadığını düşündüm. Sonuçta her şey olduğu gibi ortadaydı... Ama o, IntelliJ IDEA'da Git'i kullanmaya başladığım ana kadardı... Başından beri kişisel deneyimimi anlattığımı söylemek istiyorum. IntelliJ IDEA'da herhangi bir sorunu çözmenin birkaç yolu vardır. Makalede anlatacağımdan daha iyi bir yol biliyorsanız, yorumlara yazın, tartışalım.

Gerekli girişler:

  1. Git hakkındaki makalemi okuyun, takip edin ve anlayın . Bu, her şeyin kurulu ve kullanıma hazır olduğundan emin olmanıza yardımcı olacaktır.
  2. IntelliJ IDEA'yı kurun.
  3. Tam ustalık elde etmek için bir saatlik kişisel zaman ayırın.
Git ile ilgili makale için kullandığım demo projesi üzerinde çalışalım .GÜNCELLEME:Yayınlandığı tarihte yeni GitHub kullanıcı arayüzü kullanıma sunulacak ve bazı simgeler makalede gösterildiği yerde olmayacak. Paniğe kapılmayın: ya yeni kullanıcı arayüzüne geçmemeniz ya da onları aramanız yeterlidir.

Projeyi yerel olarak klonlayın

Burada iki seçenek vardır:
  1. Halihazırda bir GitHub hesabınız varsa ve daha sonra bir şeyi zorlamak istiyorsanız, projeyi çatallamak ve kendi kopyanızı klonlamak daha iyidir.
  2. Depomu klonlayın ve her şeyi sunucuya itme yeteneği olmadan her şeyi yerel olarak yapın. Sonuçta burası benim arşivim :)
GitHub'dan bir projeyi klonlamak için proje bağlantısını kopyalayıp IntelliJ IDEA'ya iletmeniz gerekir:
  1. Proje adresini kopyalayın:

    Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 2
  2. IntelliJ IDEA'yı açın ve "Sürüm Kontrolünden Al"ı seçin:

    Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 3
  3. Proje adresini kopyalayıp yapıştırın:

    Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 4
  4. Bir IntelliJ IDEA projesi oluşturmanız istenecektir. Teklifi kabul et:

    Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 5
  5. Derleme sistemi olmadığından ve bu, bu makalenin kapsamı dışında olduğundan, Mevcut kaynaklardan proje oluştur'u seçiyoruz :

    Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 6
  6. Sonra bu güzel ekranı göreceksiniz: Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 7Artık klonlamayı çözdüğümüze göre, etrafa bir göz atabilirsiniz.

Git kullanıcı arabirimi olarak IntelliJ IDEA'ya ilk bakış

Klonlanan projeye daha yakından bakın: sürüm kontrol sistemi hakkında zaten birçok bilgi edinebilirsiniz. İlk olarak, sol alt köşede Sürüm Kontrol bölmesine sahibiz . Burada tüm yerel değişiklikleri bulabilir ve taahhütlerin bir listesini alabilirsiniz ("git log"a benzer). Log tartışmasına geçelim . Geliştirmenin tam olarak nasıl ilerlediğini anlamamıza yardımcı olan belirli bir görselleştirme var. Örneğin, txt commit'e eklenmiş bir başlıkla yeni bir dalın oluşturulduğunu ve bunun daha sonra ana dalda birleştirildiğini görebilirsiniz . Bir taahhüdü tıklarsanız, sağ köşede taahhütle ilgili tüm bilgileri görebilirsiniz: tüm değişiklikleri ve meta verileri.Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 8Ayrıca, gerçek değişiklikleri görebilirsiniz. Orada da bir ihtilafın çözüldüğünü görüyoruz. IDEA da bunu çok iyi sunuyor. Bu taahhüt sırasında değiştirilen dosyaya çift tıklarsanız, çakışmanın nasıl çözüldüğünü göreceğiz: Cennette yapılmış bir eşleşme: Git ve IntelliJ IDEA - 9Solda ve sağda aynı dosyanın birleştirilmesi gereken iki versiyonu olduğunu not ediyoruz. Ve ortada, nihai birleştirilmiş sonuca sahibiz. Bir projede birçok şube, commit ve kullanıcı varsa şube, kullanıcı ve tarihe göre ayrı ayrı arama yapmak gerekiyor: Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 10Başlamadan önce anlatmak istediğim son şey hangi şubede olduğumuzu nasıl anlayacağımız. anlamak için bir dakika... Buldun mu? Pes etmek? :D Sağ alt köşede Git:master diye bir buton var. "Git:"ten sonra gelen her şey geçerli daldır. Düğmeye tıklarsanız pek çok faydalı şey yapabilirsiniz: başka bir şubeye geçin, yeni bir şube oluşturun, mevcut bir şubeyi yeniden adlandırın vb.Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 11

Bir depo ile çalışma

Yararlı kısayol tuşları

Gelecekteki çalışmalar için birkaç çok yararlı kısayol tuşunu hatırlamanız gerekir:
  1. CTRL+T — Uzak havuzdan en son değişiklikleri alın (git çekme).
  2. CTRL+K — Bir taahhüt oluştur / mevcut tüm değişiklikleri gör. Bu, hem izlenmeyen hem de değiştirilen dosyaları içerir (bunu açıklayan git hakkındaki makaleme bakın) (git commit).
  3. CTRL+SHIFT+K — Bu, değişiklikleri uzak havuza gönderme komutudur. Yerel olarak oluşturulan ve henüz uzak depoda olmayan tüm taahhütler gönderilir (git push).
  4. ALT+CTRL+Z — Belirli bir dosyadaki değişiklikleri, yerel depoda oluşturulan son işlemin durumuna geri alın. Sol üst köşede tüm projeyi seçerseniz, tüm dosyalardaki değişiklikleri geri alabilirsiniz.
Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 12

Ne istiyoruz?

İşi bitirmek için her yerde kullanılan temel bir senaryoda ustalaşmamız gerekiyor. Amaç, yeni işlevselliği ayrı bir dalda uygulamak ve ardından onu uzak bir depoya iletmektir (daha sonra ana şubeye bir çekme isteği de oluşturmanız gerekir, ancak bu, bu makalenin kapsamı dışındadır). Bunu yapmak için ne gerekli?
  1. Ana daldaki tüm mevcut değişiklikleri alın (örneğin, "master").

  2. Bu ana şubeden işiniz için ayrı bir şube oluşturun.

  3. Yeni işlevselliği uygulayın.

  4. Ana şubeye gidin ve biz çalışırken herhangi bir yeni değişiklik olup olmadığını kontrol edin. Değilse, o zaman her şey yolunda. Ancak değişiklikler varsa, o zaman aşağıdakileri yaparız: çalışan şubeye gidin ve değişiklikleri ana şubeden bizimkine yeniden temellendirin. Her şey yolunda giderse, o zaman harika. Ancak çatışmaların olması tamamen mümkündür. Olduğu gibi, uzak depoda zaman kaybetmeden önceden çözülebilirler.

    Bunu neden yapmanız gerektiğini merak ediyor musunuz? Bu iyi bir davranıştır ve şubenizi yerel depoya gönderdikten sonra çatışmaların oluşmasını önler (tabii ki çatışmaların yine de olma olasılığı vardır, ancak çok daha küçük hale gelir).

  5. Değişikliklerinizi uzak depoya aktarın.
Bundan sonra ne geleceği, görevlerinize ve hayal gücünüze bağlıdır.

Değişiklikler uzak sunucudan alınsın mı?

README'ye yeni bir taahhütle bir açıklama ekledim ve bu değişiklikleri almak istiyorum. Hem yerel depoda hem de uzak depoda değişiklikler yapıldıysa, birleştirme ve yeniden temellendirme arasında seçim yapmaya davet ediliriz. birleştirmeyi seçiyoruz. CTRL+T girin : Cennette yapılmış bir eşleşme: Git ve IntelliJ IDEA - 13Artık BENİOKU'nun nasıl değiştiğini görebilirsiniz, yani uzak havuzdaki değişiklikler çekildi ve sağ alt köşede sunucudan gelen değişikliklerin tüm ayrıntılarını görebilirsiniz.Cennette yapılmış bir eşleşme: Git ve IntelliJ IDEA - 14

Master'a dayalı yeni bir şube oluştur

Burada her şey basit.
  1. Sağ alt köşeye gidin ve Git: master'ı tıklayın . + Yeni Şube öğesini seçin .

    Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 15
  2. Checkout şubesi onay kutusunu seçili bırakın ve yeni şubenin adını girin. Benim için readme-improver olacak .

    Cennette yapılmış bir eşleşme: Git ve IntelliJ IDEA - 16

    Git: master daha sonra Git: readme-improver olarak değişecektir .

Paralel çalışmayı simüle edelim

Çatışmaların ortaya çıkması için, birisinin onları yaratması gerekir :D BENİOKU'yu tarayıcı aracılığıyla yeni bir taahhütle düzenleyeceğim, böylece paralel çalışmayı simüle edeceğim. Sanki ben üzerinde çalışırken biri aynı dosyada değişiklik yapmış gibi. Sonuç bir çatışma olacaktır. 10. satırdan "fully" kelimesini kaldıracağım.

İşlevlerimizi uygulayın

Görevimiz BENİOKU'yu değiştirmek ve yeni makaleye bir açıklama eklemek. Yani Git'teki çalışma IntelliJ IDEA'dan geçer. Bunu ekleyin: Cennette yapılmış bir eşleşme: Git ve IntelliJ IDEA - 17Değişiklikler yapılır. Şimdi bir taahhüt oluşturabiliriz. CTRL+K tuşlarına basarak bize şunu verir: Cennette yapılmış bir eşleşme: Git ve IntelliJ IDEA - 18Bir taahhüt oluşturmadan önce, bu pencerenin neler sunduğuna yakından bakmamız gerekir. Nereye bakacağınızı göstermek için kırmızı oklar ekledim. Burada çok ilginç şeyler var. Commit Message bölümünde commit ile ilgili text yazıyoruz. Sonra onu oluşturmak için Commit'e tıklamamız gerekiyor.. Bunu bir kısayol tuşuyla nasıl yapacağımı hala öğrenemedim. Birisi nasıl olduğunu öğrenirse, lütfen bana yaz - bu beni çok mutlu eder. README'nin değiştiğini yazıp commit'i oluşturuyoruz. Sol alt köşede, taahhüdün adıyla bir uyarı açılır:Cennette yapılmış bir eşleşme: Git ve IntelliJ IDEA - 19

Ana dalın değişip değişmediğini kontrol edin

Görevimizi tamamladık. İşe yarıyor. Testler yazdık. Herşey yolunda. Ancak sunucuya göndermeden önce, bu arada ana dalda herhangi bir değişiklik olup olmadığını kontrol etmemiz gerekiyor. Bu nasıl olabilir? Oldukça kolay: Birisi sizden sonra bir görev alıyor ve bu kişi görevi sizin tamamlamanızdan daha hızlı bitiriyor. Yani master şubeye gitmemiz gerekiyor. Bunu yapmak için aşağıdaki ekran görüntüsünde sağ alt köşede gösterileni yapmamız gerekiyor: Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 20Ana dalda, uzak sunucudan en son değişikliklerini almak için CTRL+T tuşlarına basın. Değişikliklere baktığınızda, ne olduğunu kolayca görebilirsiniz:Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 21"fully" kelimesi kaldırıldı. Belki de pazarlamadan biri bunun böyle yazılmaması gerektiğine karar verdi ve geliştiricilere onu güncelleme görevi verdi. Artık ana dalın en son sürümünün yerel bir kopyasına sahibiz. Readme-improver'a geri dönün . Şimdi değişiklikleri ana şubeden bizimkine yeniden temellendirmemiz gerekiyor. Bunu yapıyoruz: Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 22Her şeyi doğru yaptıysanız ve benimle birlikte takip ettiyseniz, sonuç README dosyasında bir çakışma göstermelidir: Cennette yapılmış bir eşleşme: Git ve IntelliJ IDEA - 23Burada ayrıca anlamamız ve özümsememiz gereken birçok bilgi var. Burada gösterilen, çakışmaları olan dosyaların (bizim durumumuzda bir dosya) listesidir. Üç seçenek arasından seçim yapabiliriz:
  1. sizinkini kabul edin — yalnızca beni oku geliştiriciden gelen değişiklikleri kabul edin.
  2. onlarınkini kabul et — yalnızca anadan gelen değişiklikleri kabul et.
  3. birleştir — neyi saklamak ve neyi atmak istediğinizi kendiniz seçin.
Neyin değiştiği belli değil. Ana dalda değişiklikler varsa, bunlara orada ihtiyaç duyulmalıdır, bu nedenle değişikliklerimizi öylece kabul edemeyiz. Buna göre birleştirme seçiyoruz : Cennette yapılmış bir eşleşme: Git ve IntelliJ IDEA - 24Burada üç bölüm olduğunu görebiliriz:
  1. Bunlar, beni oku iyileştirmeden gelen değişikliklerdir.
  2. Birleştirilmiş sonuç. Şimdilik, değişikliklerden önce var olan şey bu.
  3. Ana daldaki değişiklikler.
Herkesi memnun edecek birleşik bir sonuç üretmemiz gerekiyor. Değişikliklerimizden ÖNCE nelerin değiştirildiğini incelediğimizde, basitçe "fully" kelimesini kaldırdıklarını anlıyoruz. Tamam sorun yok! Bu, onu birleştirilmiş sonuçta da kaldıracağımız ve ardından değişikliklerimizi ekleyeceğimiz anlamına gelir. Birleştirilmiş sonucu düzelttikten sonra Apply'a tıklayabiliriz . Ardından, yeniden düzenlemenin başarılı olduğunu bildiren bir bildirim açılır: Cennette yapılmış bir eşleşme: Git ve IntelliJ IDEA - 25İşte! İlk çatışmamızı IntelliJ IDEA ile çözdük :D

Değişiklikleri uzak sunucuya gönder

Bir sonraki adım, değişiklikleri uzak sunucuya iletmek ve bir çekme isteği oluşturmaktır. Bunu yapmak için CTRL+SHIFT+K tuşlarına basmanız yeterlidir . Ardından şunu elde ederiz: Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 26Solda, uzak depoya gönderilmemiş taahhütlerin bir listesi olacaktır. Sağda değişen tüm dosyalar olacak. Ve bu kadar! Push'a basın , mutluluğu yaşayacaksınız :) Push başarılı olursa, sağ alt köşede şöyle bir bildirim göreceksiniz:Cennette yapılan bir eşleşme: Git ve IntelliJ IDEA - 27

Bonus kısım

İlk başta, bu makaleye bir çekme isteği oluşturulmasını eklemek istemedim, ancak onsuz tam olarak tamamlanmış sayılmaz. Öyleyse, bir GitHub deposuna gidelim (elbette sizin olan :)) ve GitHub'ın zaten ne istediğimizi bildiğini görüyoruz: Cennet gibi bir eşleşme: Git ve IntelliJ IDEA - 28Compare & pull request . Ardından Çekme isteği oluştur'u tıklayın . Çakışmaları önceden çözdüğümüz için, şimdi bir çekme isteği oluştururken onu hemen birleştirebiliriz: Cennette yapılmış bir eşleşme: Git ve IntelliJ IDEA - 29Ve bu sefer söylemek istediğim tek şey bu. Tabi ben sadece sizin için kapıyı biraz açtım ve size küçük bir kısmını gösterdim. Gerisini ihtiyacınız oldukça öğreneceksiniz. Sizi GitHub'da beni takip etmeye davet etme alışkanlığım var., işte kullandığım çeşitli teknolojileri içeren projelerimi yayınladığım yer. Yakın zamanda kişisel bir başarı elde ettim: projelerimden birine yüzden fazla geliştirici yıldız verdi. Yaptığınız şeyin bir başkası tarafından kullanıldığını bilmek inanılmaz bir mutluluk duygusudur. Ve bunu iyilik için kullanmak.

Kullanışlı bağlantılar

  1. CodeGym: Git'e başlarken: yeni başlayanlar için kapsamlı bir rehber
  2. GitHub: Uygulama için demo projesi
  3. JetBrains: Bir Git Deposu Kurun
  4. GitHub: Hesabım