TFS'den Git'e


14

Ben bir .NET geliştiricisiyim ve birçok kez kaynak kontrol yazılımım olarak TFS'yi (ekip temel sunucusu) kullandım. TFS'nin iyi özellikleri:

  1. Visual Studio ile iyi entegrasyon (böylece neredeyse her şeyi görsel olarak yaparım; konsol komutları yok)
  2. Kolay çıkış, check-in işlemi
  3. Kolay birleştirme ve çakışma çözümü
  4. Kolay otomatik yapılar
  5. Dallanma

Şimdi Git'i açık kaynak projelerimin omurgası, deposu ve kaynak kontrolü olarak kullanmak istiyorum. Projelerim depolama mekanizması olarak MySQL veya SQL Server veritabanlarıyla C #, JavaScript veya PHP dilinde.

Bu amaçla github.com'un yardımını kullandım ve orada bir profil oluşturdum ve Git için bir GUI indirdim. Bu bölüme kadar çok kolaydı.

Ama neredeyse daha ileri gitmekte takıldım. Ben de dahil olmak üzere bazı basit (gerçekten basit) işlemler yapmak istiyorum:

  1. Git'te bir proje oluşturma ve bunu dizüstü bilgisayarımdaki bir klasöre eşleme
  2. Dosya ve klasörleri teslim alma / teslim etme
  3. Çatışmaları çözme

Şimdi tek yapmam gereken bu. Ama GUI o kullanıcı dostu değil gibi görünüyor. GUI'nin böyle bir Connect To...şeye sahip olmasını bekliyorum ve sonra bir proje listesinin gösterilmesini bekliyorum ve birini seçtiğimde, tıpkı TFS projenizi keşfetmek gibi, bu projenin dosya ve klasörlerinin listesini görmeyi umuyorum. Visual Studio'da. Sonra bir dosyayı sağ tıklayıp check-in...veya veya check-outbenzeri şeyleri seçebilmek istiyorum.

Çok mu bekliyorum? Git'i TFS gibi kolayca kullanmak için ne yapmalıyım? Burada ne eksik?


8
Bir yıl önce SVN'den git'e geçtim ve çok mutluyum. Ben sert bir komut satırı düşmanı dışında kimseye SVN tavsiye ETMEM. Git'i öğrendikten sonra seveceksiniz.
maaartinus

14
Neden Windows kullanıcıları grafik arayüzlere bu kadar takıntılı?
tdammers

8
@tdammers Windows'taki komut satırı cehennem gibi berbat mı? Biliyorum, PowerShell var, ama kullanıyorlar mı?
maaartinus

3
@Saeed, bir başlangıç ​​için, git'te dosyaları içeri ve dışarı kontrol etmek gibi bir şey olmasını bekliyorsunuz. Hiçbir kullanılabilir VCS yıllardır bunu yapmamıştır.
Daniel Roseman

1
: Önerilen okuma ericsink.com/entries/vcbe_print_edition_free.html (. Hala bir merkezi sunucu, zihin kullanabileceği) Bu sürüm kontrolü temellerini arasında merkezi ve merkezi olmayan farkları açıklar
İnka

Yanıtlar:


19

Avantajları git, bir VCS'nin ne yapması gerektiği hakkında birçok eski varsayımı atmaktan geldi. Dezavantajları git, önceki deneyimlerden yararlanamamak ve alıştığınız gibi bir şeyler yapamamaktan kaynaklanmıştır.

Başka bir şeyden git'e geçecekseniz, tabula-rasa'yı başlatmaya çalışın (pratikte gerçekten yapmak imkansız olsa da). O ne yaptığını ve dayalı değerlendirin değil üzerine, bunu nasıl iyi nasıl o bunu yapmaya nasıl kullanıldığını göre yapar. Çok fazla beklediğiniz değil, beklentilerinizin git'in sağladığı yönüyle dik olması. GUI operasyonuyla evliyseniz hayal kırıklığına uğrayacaksınız. Git'in gui araçları var, ancak fazla eklemiyorlar. Bir gui'nin ekleyebileceği fazla bir şey olmadığı için bu onlara çok fazla bir başarısızlık değil. GitK günlük operasyonlarda değil, şube yapısının görselleştirilmesinde ve tarihin incelenmesi veya aranmasında yardımcı olur.

İşte "dikey" ile kastettiğim şey için aptalca bir benzetme. Bir gazete ile yapabileceğiniz şeylerden biri, içine balık sarmak veya bir kuş kafesini sıralamak için kullanmaktır. Ancak bunlar bir gazetenin işlevi için gerekli değildir, bunlar geldiği formun arızi özellikleridir . Git'i "dosyalara teslim et" veya "projeleri seçmenize izin ver" veya "bağlantıya geç ..." "balık sarmayı veya kuş kafenizi bir gazetenin web sitesiyle sıralamayı beklemek gibi bir şey .


Hata, düzenlemeyi açıklamayı unuttum. Daha fazla kahve için ve benzetmeyi kafama soktuktan sonra son paragrafı ekledim.
kylben

3
Sonunda metaforu sevdim. +1
Yam Marcovic

7

Merkür mü düşündün? Git gibi, bir DCVS'dir ve bir DCVS ile yapabileceğiniz tüm düzgün şeyleri yapmanızı sağlar. Git gibi oldukça iyi, bulut tabanlı bir servis sağlayıcı (bitbucket) var. Ancak git'in aksine, windows hikayesi oldukça iyi, 2. sınıf bir vatandaş değilsiniz. İyi takım seçenekleriniz (TortiseHG) ve oldukça iyi bir Visual Studio entegrasyonu (VisualHG) var.

Yine de görsel stüdyoda TFS gibi bir şey olmayacak - dünya bu şekilde kablolu değil.


1
Katılıyorum, birkaç yıl önce VSS'den Mercurial'a taşındım ve bu gerçek bir tezahürdü. Birden pratik olacağını hiç düşünmediğim şeyleri yapabilirdim. Sonra taşındım svnve çok kolay olan birçok şeyi kaçırdım hg. Şimdi gitkarışık duygulara geçiyorum. Kaçırdığım bu tesislerin çoğunu geri almayı seviyorum svn, ama yine hgde gereksiz karmaşıklığına kıyasla basitliğini özlüyorum git. TortoiseGit'in pencerelere yüklenmesi bile , TortoiseHg ile gerekli olmayan çemberlerden atlamanızı gerektirir .
Mark Booth

@ Mark Booth: Ben git derece kullanıcı dostu ama ne olmadığını kabul ediyorum gereksiz karmaşıklığı ? Yükleme sorunları sayılmaz, TortoiseGit (farklı bir programdır) veya Windows ile ilişkilendirilebilir.
maaartinus

Bu sohbet sırasında daha iyi olurdu, ancak dizin / önbellek / evreleme alanı için herhangi bir şeye ihtiyaç duymuyorum, IMHO varsayılan, istendiği takdirde kısmi taahhüt seçeneği ile her şeyi taahhüt etmelidir (daha iyi, hala yaptığınız değişiklikleri rafa almak olacaktır) Hemen istemeyin, birim testlerinizi tekrarlayın, taahhüt edin ve ardından unchelve yapın). Ayrıca istediğim zaman yeni bir şube oluşturmaktan nefret ediyorum. Hg ile adsız bir şube her ne zaman bir kafa taahhüt ettiğinizde sessizce oluşturulur. Git'te, dallanmadan bir kafadan uzaklaşırsanız, potansiyel olarak kaybedebilir ve daha sonra çöp toplayabilirsiniz!
Mark Booth

6

Bir yıl önce SVN'den git'e geçtim ve çok mutluyum. Ancak, herhangi bir GUI'ye güvenmiyorum ve komut satırını katı bir şekilde reddederseniz bir sorun olabilir.

Alıştığınız gibi gitçalışmayı umuyorsunuz, ama çalışmıyor. Zor değil, ancak devam etmeden önce ilkelerine bir göz atmalısınız.

Git'te bir proje oluşturma ve bunu dizüstü bilgisayarımdaki bir klasöre eşleme

Git dağıtılır, yani her zaman yerel deponuzla çalışırsınız; sıfır da dahil olmak üzere herhangi bir sayıda uzaktan kumanda ile eşleştirilebilir. Başkalarının projesi ile oynarken iki uzaktan kumanda kullanıyorum: onların git veya SVN deposu ve kendi sunucum.

Her zaman boş bir dizin oluşturarak başlarım ya da git initya git clone SOME-REMOTE-REPOSITORY. Bu bağlantı size yardımcı olabilir.

Dosya ve klasörleri teslim alma / teslim etme

Kullandığınız GUI'yi yazmayı kaçırdınız. Hem TortoiseGitve git-guikesinlikle bunu yapabilir.

Çatışmaları çözme

Bunun için kullanıyorum git-guiveya favori metin düzenleyicim.

GUI'nin Bağlan ... ya da bunun gibi bir şey olmasını bekliyorum

0'dan N'ye uzaktan kumanda olabileceği zaman neye bağlanın? Git uzak bir sunucuya bağlı kalmaz, bağlantıyı yalnızca geçici olarak ve uzak depoyla çalışan birkaç komut için oluşturur. İşlerin çoğu yerel olarak yapılır.

o zaman projelerin bir listesinin gösterilmesini bekliyorum

Demek projectsistediğimi kastediyorum repositories.

Korkarım böyle bir şey yok. Uzak bir sunucudaki Git kesinlikle yalnızca bir havuzla çalışır. Tüm depoları listelemek, alt dizini içeren tüm dizinleri listelemeye eşdeğerdir .git. Eminim böyle bir şey var GitHub.

Birini seçiyorum, tıpkı araştırmak gibi o projenin dosya ve klasörlerinin listesini görmeyi umuyorum

Yine, korkarım böyle bir şey yok, çünkü gityerel olarak çalışıyor. Ve yine, çok işe yaramazdı. Depoyu kopyalayın ve bilgisayarınızda keşfedin. Büyük depoların klonlanması biraz zaman alırken, sonraki tüm işlemler çok daha hızlıdır ve herhangi bir taahhüt veya şubeye bakabilirsiniz.

Sonra bir dosyayı sağ tıklayıp check-in ... ya da check-out ve bunun gibi şeyler seçebilmek istiyorum.

Yine, gityerel olarak çalışır. Bu yüzden uzak bir repoya giriş veya çıkış yapmak mantıklı değil. Bu şekilde çalışmak, hızlı bir LAN'da bile zaman kaybıdır. Depoyu bilgisayarınıza alın, onunla çalışın git pushve uzaktan kumandadaki değişiklikleri yapın. Değişikliklerinizi yayınlamak ve ayrıca yedekleme yapmak gibi düşünün. Sen gerektiğini çok sık yerel olarak tamamlama .

Çalışmaya başlamadan önce git fetchveya git pullbaşka birinin çalışıyor olması durumunda uzaktan kumandadaki değişiklikler.

Çok mu bekliyorum?

Evet ve hayır. Sunduklarından farklı bir şey bekliyorsunuz. Çok daha iyi bir şey elde edebilir git, güçlü, esnek, güvenli, cehennem gibi hızlı olabilir ve ihtiyacınız olan her şeyi yapabilirsiniz, ancak merkezi bir VCS'nin ne yaptığını tam olarak taklit edemezsiniz.


5

Ben görsel kaynağından tfs svn git için güvenli journy yaptık.

Vss tfs için gitmek hoş bir deneyim oldu. TFS svn için gitmek hoş bir deneyim oldu. Svn'den git'e gitmek bir tür iç savaş oldu.

Genellikle kendimi oldukça muhafazakar buluyorum ve işe yarayan şeylere dayanmaya çalışıyorum. Güzel bir gui benim için komut satırından daha çok tercih ediliyor ve kendimi çalıştığım harika çocuklarla oynamama izin verecek bazı gui'leri ararken buldum. Hepsi git komut satırını sadece komut satırı ile kullandılar.

Benim için eureka anı gümüş mermi gui arayışından vazgeçip git bash'ı denemeye başladığımda geldi (hala öğreniyorum).

Bazı guis yüklü ve onlar komut satırından git tamamlayıcı yapmak. Git uzantıları, Git Visual Studio ve kaplumbağa için kaynak kontrol sağlayıcısı. Ama git bash'ı tanıyın diyorum. Komutlar biraz şifreli olabilir, ancak bunları öğrendikten sonra gui'den çok daha hızlıdırlar.

Git ile dallanma diğerlerine göre sadece MÜKEMMEL. Dallar oluşturun ve dallar arasında geçiş neredeyse anında. Svn ile uğraşmayacağınız şeyler yapabilirsiniz, çünkü svn temel olarak çalışma kopyanızı kopyalar (en azından yaptığım şekilde).

Git'i svn'den daha dik bir öğrenme eğrisine sahip buluyorum. Ama git ile "elde" bir kez geri dönmek istemiyorum.

Tüm yol boyunca git.


5

Dosyalarınızı depolayan ve her şeye gücü yeten sahibi olan bir sunucuya alışkınsınız. Bir dosyayı düzenlemek için sunucudan izin istemeniz gerekir.

Git öyle değil. Git'i şu şekilde düşünün: yerel deponuz var. Git sen, yedekleme kaynak kontrol geçmişini istediğinizde vb değişiklikleri, ters hareketin, kolay ve hızlı dallanma, taahhüt sağlayan itme değişikliklerinizi başka GitHub.com gibi bir sunucu, "sadece olur" depo.

İş Akışı:

  1. Klonla (İndir) / Havuz oluştur
  2. Bazı değişiklikler yapın. Başkalarını umursamadan gelişime devam edin.
  3. Başka bir veri havuzuna aktarın (GitHub gibi bir sunucu olabilir).
  4. Bir depoya bastığınızda, diğer havuzun sahibine bekleyen push bildirilir ve bu taahhütleri kabul edip etmeyeceğine, reddettiğine veya yalnızca alt kümesini alıp almayacağına karar vermelidir.
  5. Döngü devam ediyor.

Hepsi bu.


1

Ne demek "git gui"? Doğru hatırlarsam, görsel stüdyo entegrasyonu için bir eklenti de dahil olmak üzere bir milyardan fazla var. Bir GUI sizin için çalışmazsa, uygun bir GUI bulana kadar biraz daha deneyin. Şahsen farklı görevler için (ve diğerleri için CLI) farklı GUI'ler kullanıyorum.

Ancak git, sabit bir sistemden çok bir sürüm kontrol çerçevesidir. En iyi şekilde yararlanmak için hala bazı temel bilgileri öğrenmeniz gerekecek.


-2

Çok mu bekliyorum?

Evet

Git'i TFS gibi kolayca kullanmak için ne yapmalıyım?

Hiçbir şey değil. Git CLI merkezli ve iyi bir ön uca sahip değil ( diğer Tortoise * ile karşılaştırıldığında cevap vermeyen TortoiseGit'i biliyorum ). Sen deneyebilirsiniz SmartGit kullanmak (Java dikkat)


1
-1: Dosyaları teslim etme / teslim etme ve çakışmaları çözme kaynak denetiminden 'fazla beklemiyor'.
Steven Evers

2
+1 Onları doğrudan uzak sunucudan kontrol etmek mantıklı değil. LAN üzerinden bile yavaşlamak için. Böyle şeyler yapmak VCS için değil FTP için bir şeydir.
maaartinus

1
"Giriş / çıkış" dosyalarını kontrol etmek bir VCS için temel bir işlem değildir. Çoğu VCS için ortak olan ve ince ama talihsiz yan etkileri olan bir uygulama özelliğidir.
kylben

2
@kylben: giriş / çıkış kontrolü, sürüm kontrolüne bakmanın bir yoludur; düzenleme ve birleştirme başka bir yoludur. Bazı VCS'ler önceki yaklaşımı kullanır, size özel kilitler ve tek tek dosyaları kontrol etme yeteneği verir; diğerleri ikincisini alır ve bunlarla birlikte, tüm depoyu indirir, yerel değişikliklerinizi yapar ve daha sonra bunları tekrar uzaktan kumandaya itersiniz; VCS, çelişkili değişiklikleri yönetmeye özen gösterir ve şüphe durumunda girişinizi ister. Her iki yaklaşım da daha iyi değildir, ancak genellikle bir VCS'yi henüz yapılmamış olana bükemezsiniz.
tdammers

1
'İçeri / dışarı' kontrol ederek, aslında kilit tabanlı VCS'nin uygulama yöntemlerinden bahsediyordum, düzenleme için kaynak dosyaları nasıl indirebileceğinizden değil (aslında her VCS'nin yapabilmesi gereken bir şey). Birçok VCS'nin sadece bir dosyayı 'ödeme' olarak indirme işlemine atıfta bulunması, yanlış bir IMO'nun bir parçasıdır - hiçbir şey kontrol edilmez ve depo, dosyanın kimin olduğunu hatırlamaz.
tdammers
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.