GitHub için GUI uygulamaları varken neden git'i öğrenmelisiniz?


84

GitHub hem GUI uygulama sunar düşünüldüğünde Mac ve Windows'ta komut satırından budala kullanmayı öğrenmenin faydaları nelerdir?

Şu anda depolarımı güncellemek için mac uygulamalarını kullanıyorum ve şu ana kadar ihtiyaçlarımı karşılayacak gibi görünüyor. Neyi kaçırıyor olabilirim?


15
Linux için bir GUI olan gitk'i unutma.
GeliştiriciDon

14
Senaryoyu özlüyorsun.
SK-mantığı

3
@KChaloux, evet, neden çok iyi bir neden yoktur çoğu GUI uygulamalar hiç de script değildir. Ve senaryo yazanlar sadece korkunç (COM ve benzeri abominasyonlar düşünüyorum).
SK-mantık

2
@KChaloux, sebebi kaliteli değil. Saf bir GUI uygulamasını komut dosyası haline getirmek gerçekten zordur. Bildiğim tüm makul yaklaşımlar, temel olarak, bir komut satırı arabiriminin bir biçimini - temelde bir komut diliyle aynı şey olan bir Unix tarzı CLI ya da metin tabanlı bir komut dili ya da bir ikili protokol tanıtımı üzerine kuruludur. , bakınız COM. Ancak elbette en iyi yaklaşım, hem çeşitli CLI araçları ile hem de GUI'lerden erişilebilen ortak bir çekirdeğe sahip olmaktır. Sonuncusu, basitlik için CLI üzerine de inşa edilebilir.
SK-mantığı

13
Sen değil. Aynı şekilde, Dreamweaver ve Frontpage (ya da şimdi olanı) olduğundan HTML / CSS öğrenmenize gerek yoktur. Belki bazı şeyler için sizin için işe yarar, ancak birisi gerçekten nasıl çalıştığını daha iyi bilmediğinde.
DorkRawk

Yanıtlar:


116

Bu sorunun sadece "Neden bir GUI alternatifinin var olduğu herhangi bir CLI'yi öğrenmeliyim?" "Özel bir durum olduğunu düşünüyorum. İkinci sorunun GUI'ler kadar eski olduğundan şüpheliyim ve yıllar içinde bunu cevaplamak için birçok girişim olduğunu varsayıyorum. Bu soruya kendi cevabımla yolumu karıştırmaya çalışabilirim, ancak Neal Stephenson on yıldan daha önce , “Başlangıçta Olağanüstü Komut Satırıydı ” adlı makalesinde 'nihai cevap' olarak kabul ettiğimi dile getirdi .

Deneme, bilgisayar kullanımının birçok yönüne değinirken, Stephenson bile , bunun çoğunun artık kullanılmayacağını düşünüyor olsa da, denemede, CLI'lerin hayatımı kelimenin tam anlamıyla değiştiren son derece çekici bir şekilde hangi GUI'lerin daha iyi olduğunu açıklıyor. Uzun bir okuma (~ 40 sayfa), ancak burada sorduğunuz gibi sorular soran birisine yeterince öneride bulunamıyorum.

Son olarak, herhangi bir CLI - GUI benzeri soruyu benzer şekilde cevaplayabilsem de, cevabım, sormayı seçtiğiniz tüm bilgisayar şeyleri nedeniyle özellikle sizin özel sorunuza sadık kaldığını düşünüyorum git. gittartışmasız, Stephenson'un makalesinde anlatıldığı gibi son derece uzun olmayan bir bilgisayar araçları listesindeki en son araçtır. gitDiğer bazı Unix-ish şeyleri gibi, CLI'leri kendi içinde tanımak için bir nedendir. Bazen düzensiz 'porselenine' rağmen ; bazen bunun yüzünden.

Yani evet, kesinlikle github'ın GUI'sinde üretken olabilirsiniz, ya OSX için ya da sadece web sitelerinde. Evet, aslında oldukça şık, sitenin özelliklerini sık kullanıyorum. Ama hayır, sağ pinky git filter-branchbir veya iki kişi için çılgınca bir emir üzerinde asılıyken asla bu Tanrısal duyguyu hissetmeyeceksiniz . Bilgisayar deneyimimden sadece bir şeyi saklamak zorunda kalsaydım - zihinsel zorluklar, saat 2'de bir veri merkezinde oluşturulan yakın arkadaşlıklar, tırmanma, kullanıcıların hayatlarına dokunma ve değerli verilerin PB'leri üzerinden hüküm süren sonsuz yetkinlik merdiveni işler ve rahat bir yaşam - sadece bir şeyi saklayın - bu Tanrıça bir his olurdu.


5
Daha erişilebilir link Başlangıçta ... Komut Satırıydı
Elias Zamaria

1
Re: eski: Bu "Batmobile olarak BeOS" kısmı olurdu, değil mi?
naught101

2
Garrett Birkel, yorumunu Neal Stephenson'un orijinal makalesiyle birleştirerek "Başlangıçta ... Komut Satırıydı" adlı makaleyi güncelledi. Buradan okuyabilirsiniz .
severim

2
... evet, Visual Basic kullanarak bir GUI arayüzü oluşturabileceğiniz zaman bir CLI'ye ihtiyaç duyan. Bir IP adresini izlemek gibi şeyler için idealdir.
Hey

3
'Eski yaşın daha iyi olduğunu' öne sürmedim, CLI'lerin GUI'lerden üstün olduğunu (pek çok bilgisayar korsanı için) önermiştim. CLI'ler ayrıca ikili anahtarlardan ve yama kablolarından daha üstündür. Bu yüzden CLI kullanıyorum. Makale "ispat" değildir, çünkü "makalede" dır, CLI'larda neyi sevdiğimi açıkça ifade eden argümanlar ile nesirdir. Eski, ama UNIX de öyle, ne olmuş. Bu arada, Google için çalışıyorum ve çevremdeki geliştiricilerin ezici çoğunluğu CLI tabanlı bir geliştirme ortamı kullanıyor (ancak elbette Google için konuşamıyorum).
Yaniv Aknin

108

Tüm ihtiyaçlarınız karşılanırsa, harika, daha derine gitmenize gerek kalmazsa, zamanınız gerçekten ihtiyacınız olan bir şeyi öğrenmek için harcanır.

git sadece bir araçtır, bir GUI uygulamasıyla yapamayacağınız bir şey yapmanız gerektiğinde, bunu bilirsiniz. Sadece aklınızda bulundurun ki github!


1
Sizinle aynı fikirdeyim, fakat şu anda farkında olmadığım, eğer onların farkındaysam benim için faydalı olabilecek şeyler olabilir. Hayır?
histelheim

28
@AronLindberg Evet, muhtemelen var. Ama yanlış soruyu soruyorsun, araştırmak için zaman harcamanız gereken, git'in iş akışları ve kavramları, komut satırı değil. Biri size GUI uygulamalarının tüm fonksiyonlarını kaçıran bile olsa, gerçekten ihtiyacınız olup olmadığını nasıl anlarsınız? (ayrıca bu, git'e ait belgelere bakarak kolayca yapabileceğiniz bir şeydir)
yannis

//, bir CLI sizi iş akışları ve kavramlar hakkında biraz daha düşünmeye zorlar, çünkü tüm organizasyonlar, seçimler ve akışlar sihirbazlarda ve açılır menülerde değil, kafanızda olur.
Nathan Basanese

57

Yalnızca CLI özelliklerinin çoğu, yanlışlıkla havuzunuzu tuhaf bir duruma getirdiğinizde ve düzeltmek istediğinizde devreye girer. Öte yandan, reponuzu tuhaf bir duruma sokmanın en yaygın yolu, anlamadığınız gelişmiş özellikleri kullanmaktır. GUI'nin sağladıklarına sadık kalırsanız, bu zamanın% 99'unu karşılayacaktır.

CLI'yı öğrenmek isteyebileceğiniz diğer bir sebep de git'in lingua franca olmasıdır. Bu, birçok insan farklı platformlarda farklı GUI'ler kullanırken, StackOverflow veya başka bir yerde yardım istemeniz durumunda, cevap muhtemelen CLI komutları biçiminde gelecektir. CLI'yı bilmiyorsanız, yardım alma seçenekleriniz çok daha sınırlı olacak.


Kesinlikle en iyi cevap burada. Falan filan felsefesi değil.
john cj

//, bu benim ilk düşüncemdi ve felsefi cevaplar bana hitap etse de, CLI'leri kullanmamın en temel nedeni, metin üzerinde başkalarına düşünmeleri, standartlaştırmaları ve iletişim kurmaları çok daha kolay olmalarıdır. Hepimiz nasıl çizileceğini bilemeyebiliriz, ama hepimiz nasıl yazılacağını biliyoruz.
Nathan Basanese

9

GUI uygulamaları karmaşık davranışları gerçekleştirmek için manuel etkileşimlere dayanır. Bu, proje oluşturmak ve yeni şeyler geliştirmek için mükemmeldir.

Bir Komut Satırı Arayüzünün (CLI) faydaları, otomatikleştirilebilen önceden belirlenmiş komut dosyaları oluşturma yeteneğinden gelir. Tüm GitHub'ın GUI'si, git CLI'yi çağıran hoş grafikler ve süslü düğmeler.

Ne GUI uygulaması olmayacak otomatik 1:30 am günlük bir sunucu üzerinde bir Repo en bagajı güncellemek olduğu için, ama git CLI çağıran bir cron işi o kurmak için gerçekten kolay bir yoludur.

Ek olarak, bir ekipte bir proje üzerinde çalışırken, komut dosyaları oluşturmak, komut dosyaları oluşturmak, komut dosyaları dağıtmak ve benzeri işlemler yapmak uygundur, böylece ekip arkadaşları sıkıcı tekrarlayan görevler yerine sorunları çözmeye odaklanabilirler.


gövde? Bence usta demek istiyorsun.
jpmc26

@ jpmc26, terminolojiyi affedip SVN'den gelecek olan yeni olduğumda bunu yazdım.
zzzzBov

6

CLI'nın tercih edilmesinin bir başka nedeni de iş akışı meselesidir. Birçok çerçeve komut satırı üzerinden yönetilir. Git'i CLI aracılığıyla kullanmak, projeme ve proje dizinine odaklanmama izin veriyor. Mesela bir test yapabilir ve ardından yeni değişiklikleri tamamen aynı arayüz ve konumdan yapmaya karar verebilirim.


+ 1; ve daha kolay / daha erişilebilir kullanımı, ben kullanmak duyuyorum daha muhtemel, uygun zamanlarda (musluk musluk musluk git musluk musluk musluğu taahhüt) yerine (musluk musluk fırlatma GUI git 'hafta sonuna işlemek' taahhüt)
Abe

5

Yakın zamanda, SVN-Git geçişine yardım edebilmek için Git'e gerçekten girmem gerekiyor. Ve öğrendiğim şey Git komut satırı araçları olmasıdır değil öğrenmek için karmaşık bir parçasıdır.

Git'in arkasındaki kavram ve fikirler karmaşık kısımdır (ve kötü tasarlandıkları için değil, basitçe diğer bazı merkezileştirilmiş VCS'den gelen insanların çoğu için yabancı oldukları için).

Kavramları kavradığımda, gerçek komut satırı ifadeleri nispeten kolaylaştı. Bu, bir UI'nin Git'i anlamaya gerçekten yardımcı olmadığı anlamına gelir (en basit işlemler hariç).


3
Aslında, arkasındaki kavramlar gito kadar basit ki, insanlar onları çözemez - daha sert bir şey arıyorlar.
gahooa

4

CLI'yı bilmek, bir GUI uygulamasında alamayacağınız bazı ortamlarda olduğunuzda (eğer olmazsa) faydalı olur.

Potansiyel bir senaryo: Kapalı bir konumda bir projede sisteme yeni araçlar getirmenin çok zor ve uzun olduğu bir projede sadece birkaç gün yardım etmeniz istendi. Sadece CLI kullanıyorlar. Verimliliğiniz çok etkilendi çünkü her şeyi tekrar öğrenmeniz gerekiyor.


Bir cümle cevapları nadiren çok değer sağlar. Lütfen cevabınızı genişletebilir misiniz?
Walter

//, O @grumpasaurus. Ne bekliyordun, sonnet mi?
Nathan Basanese

2

Git komut satırını öğrenmenin bir nedeni, belgelerin çoğunun bu ortam için yazılmış olmasıdır. Ayrıca, bir soru sorarsanız: "git ile X'i nasıl yaparım?", Cevabın komut satırı komutlarını içerme olasılığı vardır.


1

Bir GUI'yi ve komut satırını kullanmadaki ana sorunlardan biri, çoğu durumda işleminiz üzerinde aynı denetime sahip olamamanızdır. Örneğin, GitHub uygulaması birçok git iş akışında kullanılabilirlik açısından mükemmeldir, ancak gelişmiş git işlemleri için yine de hantal olabilir.

Örnek olarak, GitHub uygulamasını kullanarak nasıl yapacağımı çözemediğim bazı şeyler var (not edilmesi gereken diğer bir şey de, her bir GUI'nin de bir öğrenme eğrisi olduğu).

  • Rebasing taahhütleri
  • Tek tek itme / çek / al (GitHub'da bazı durumlarda sorunlara neden olabilecek tek bir "senkronizasyon" komutu altında gruplanırlar)
  • Tadilat işleri

Son olarak, CLI'ler kullanıcıların komut dosyalarını yazarken bu araçları kullanmasına izin verir.


Son nokta benim için oldukça önemli. Yapı komut dosyaları, araçlar ve sunucular nadiren gui access sürüm kontrolüne sahip olmak için bir gui kullanıyor. Bunun yerine komut satırını kullanmalısınız.

0

Mac için GitHub'u bilmiyorum, ancak Windows uygulaması yalnızca en yaygın görevleri yerine getiriyor - ekleme, işleme, gönderme, çekme, vb. Gibi daha karmaşık işlemlerin git merge --no-ffkomut satırından yapılması gerekiyor.

Ayrıca, GUI kullanılamadığında git gibi durumlar vardır, örneğin uzak sunuculara SSHing yaparken.

Fakat aksi takdirde, GUI size ihtiyacınız olan her şeyi verirse, komut satırını öğrenmek zaman kaybı olabilir. Çalışmam, yalnızca Windows ortamında TortoiseSVN kullanıyor ve SVN komut satırına bir kez bile dokunmam gerekmedi.


0

CLI’nin GUI’den daha iyi olabileceği bir vaka öğrendim. Bunu göstermek için, herkes için kitap git - sürüm kontrolünden bir örnek aldım.

Bir intranet üzerinden paylaşmak istediğinizde, şunları kullanabilirsiniz:

  1. Gitolite sunucusu
  2. Çıplak havuzlu ortak paylaşım dizini

Çıplak repo oluşturma adımlarına bakın.

CLI modunda çıplak bir havuz oluşturma

Çıplak havuz oluşturma komutu, tüm farkı yaratan --bare parametresi dışında bir havuzu klonlamak için kullandığınız komutla aynı olur. git clone --bare C:\Users\raviepic3\Desktop\Workbench C:\generic_share\ Bare_Workbench Konsolunuzdaki önceki kodun çalıştırılması, generic_share adlı ortak paylaşılan klasörünüzde Workbench depomuzun çıplak bir klonunu oluşturmalıdır.

GUI modunda çıplak havuz oluşturma

GUI kullanarak zaten var olan bir depodan çıplak bir klon oluşturmak kolay bir işlemdir. Yapmanız gereken tek şey:

  1. .Git dizinini varolan depodan kopyalayın ve farklı bir name.git (yeni çıplak havuzunuza vermek istediğiniz adı) havuzun dışına yapıştırın. Bizim durumumuzda, C: \ Users \ raviepic3 \ Desktop \ konumunda Workbench adında çıplak bir repo var ve içinde content.docx var. Ve şimdi GUI kullanarak bundan yeni bir çıplak depo oluşturmak istiyorum. C: \ Users \ raviepic3 \ Desktop \ Workbench.git dosyasını kopyalayacağım ve C: \ generic_share \ Bare_Workbench.git olarak yapıştırın.

  2. config filebir metin editörü ile iç Bare_Workbench.git ve diyor satırı bulun bare = falseve gerçek ile sahte dize değiştirin.

  3. Kaydet ve çık.

GUI'de çok fazla tıklama yapmanız ve hangi dosyanın düzenleneceğini hatırlamanız gerekir. CLI'de basit bir komut sizin için her şeyi yapar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.