SVN ve Git arasındaki şube farkını anlama


44

Ben SVN kullanıcısıyım ve şimdi Git'i öğreniyorum.

SVN'de genellikle yerel makinemde projemdeki tüm dalları içeren bir repo alıyorum ve şubem için ilgilendiğim ve çalıştığım şubenin klasörünü seçiyordum.

Git'i kullanarak bir fark görüyorum.

Şu anda bir repo klonlamak ve gitk kullanarak belirli bir dalı klonlamak.

Proje klasörü yalnızca o dalın içeriğini içeriyor ve tüm dalları SVN'deki gibi göremiyorum, bu benim için biraz kafa karıştırıcı.

Git'i kullanarak yerel havuzumdaki tüm dalları görmenin kolay bir yolunu bulamıyorum.

  • Tanımladığım Git işleminin "standart" olup olmadığını ve bir kısmının ne kadar doğru veya eksik olduğunu bilmek istiyorum.

  • Ayrıca, aynı anda iki dal üzerinde çalışmam gereken bir süreçle nasıl başa çıkacağımı bilmek istiyorum. Örneğin, ana üzerinde bir düzeltme yapmam gerekiyor, ancak başka bir dalın içeriğini de tutmam gerekiyor.

  • Örnekte şubeyi içeren klasörleri Git deposunda klonlanmış yapmak için önerilen ad kuralları nedir myproject-branchname?


8
İlginç - genellikle SVN ile sadece üzerinde çalıştığınız bagajı veya şubeyi kontrol edersiniz, ama ne demek istediğinizi anlıyorum.
HorusKol

20
SVN'de iş akışını kırdınız, şimdi Git'e yansıtmaya çalışın (oysa kısmen Git için yalnızca iyi uygulanabilir SVN-iş akışı olsa bile). En iyi çözüm - tüm SVN alışkanlıklarını unutun ve Git'e sıfırdan başlayın
Lazy Badger

6
git cloneolduğundan daha fazla svnadmin hotcopyya da svnrdump+ svnadmin loadgibidir svn checkout. İle git, içinden ufak tefek istemeyin depo; Tüm depoyı kopyalar ve yerel olarak çalışırsanız, değişiklikleri kendiniz ne zaman ve ne zaman istersen "kaynak" deposuna geri gönderirsiniz. Git ve Subversion, kaynak kontrolü için tamamen farklı iki model kullanır.
chepner

1
düzeltmeyle ilgili olarak, kullanmayı düşününgit-flow
Bakuriu

5
@LazyBadger geliştirmeyi kolaylaştırır ve değer verirse iş akışını bozmaz. Dalları kullanmanın doğru bir yolu yoktur.
dietbuddha

Yanıtlar:


67

Ben SVN kullanıcısıyım ve şimdi GIT öğreniyorum.

Çeteye hoş geldiniz!

SVN Yeniden eğitim

SVN'de genellikle [...]

Bir dakika bekle. CVS ve SVN ve diğer geleneksel (yani merkezileştirilmiş) sürüm kontrol sistemi, mercurial ve Git gibi modern (yani dağıtılmış) sürüm kontrol sistemleriyle aynı amacı yerine getirirken, Git'i sıfırdan başlayarak öğrenmek yerine daha iyi olacaksınız. SVN iş akışınızı Git'e aktarmaya çalışıyor.

http://hginit.com ( archive.org görünümü Joel Spolsky (Stack Exchange çok kurucularından biri) tarafından), cıva değil Git için bir öğretici, ama sıfır-inci bölüm var, "Subversion Yeniden eğitim" olduğunu SVN uzakta geçiş insanlar için yararlı herhangi Eğer (geçici olarak) gerekeni SVN kavramlar anlatır gibi, dağıtılmış sürüm kontrol sistemine un (ya -Daha stashuzak başınızı dağıtılan etrafında mümkün şal olmak Git kullanıcıları diyebilirsiniz gibi) sürüm kontrol sistemi kavramları ve onlarla çalışmak için kurulan deyimsel iş akışları.

Böylece bu sıfırıncı bölümü okuyabilir ve çoğunlukla "mercurial" kelimesini "Git" ile değiştirebilir ve böylece kendinizi ve fikrinizi Git'e uygun şekilde hazırlayabilirsiniz.

Güzel baskı

(Şimdilik bu atlamak olabilir.) Cıva ve Git çok daha benzer SVN daha birbirlerine olsa da, orada olan aralarında bazı kavramsal farklılıklar, "Subversion Yeniden eğitim" in ifadeleri ve tavsiye bazı teknik olarak yanlış olur böylece "mercurial" ı "Git" ile değiştirirken:

  • Mercurial dahili olarak değişiklikleri belirler ve saklar, Git de Subversion'un yaptığı gibi revizyonları (yani bir dizin ağacının içeriğinin durumları) dahili olarak izler ve saklar. Ancak Subversion Git'ten başka, her ilgili dal ve sırasıyla ortak bir ata revizyonu (gerçek bir 3 puan-birleştirme) arasındaki farklara bakarak birleştirme gerçekleştirir, bu nedenle sonuç mercurial ile aynıdır: Birleşme çok daha kolay ve daha az hatalıdır -SVN'den daha eğilimli.
  • Eğer iken edebilirsiniz depoyu klonlayarak Git'te şube, bir Git depo içinde yeni bir şube oluşturmak için çok daha yaygın olduğunu (aynı alışılmış içinde cıva olduğunu). (Çünkü Git dalları basitçe (hareketli) işaretçilere işaret ediyor, bununla birlikte mercurial şubeler her revizyona kalıcı etiketler. Bu kalıcı etiketler genellikle istenmeyen, bu yüzden mercurial iş akışları genellikle farklılaşma için tüm depoyu klonlayarak çalışır.)

SVN'de her şey bir dizindir (ancak mutlaka böyle davranmamalısınız)

Ama seni böldüm. Ne söylüyordun?

SVN'de genellikle yerel makinemde projemdeki tüm dalları içeren bir repo alıyorum ve şubem için ilgilendiğim ve çalıştığım şubenin klasörünü seçiyordum.

Bununla birlikte, SVN deposunun kök klasörünü (veya trunktek bir şubeye tekabül eden veya tek bir şubeye karşılık gelen herhangi bir klasörü , örneğin geleneksel SVN repo düzeninde, branchestüm gövde dışı dalları içeren klasörü) Muhtemelen SVN'yi yanlış (ish) kullandığınızı ya da en azından biraz kötüye kullandığınızı, gövde, dalların ve etiketlerin revizyonlar / kod temeli içindeki dizinlerle birlikte tek bir (hiyerarşik) isim alanına katlandığından bahsettim .

Birkaç SVN dalını paralel olarak değiştirmek cazip gelse de, bu SVN'nin kullanım amacını değil AFAIK'tir. (Buna rağmen, hangi özelliklerin çalışabileceği konusunda emin değilim.)

Git'te, yalnızca dizinler dizindir

Git deposunun her klonunun kendisi Git deposudur: Varsayılan olarak, tüm revizyonlar, dallar ve etiketler dahil olmak üzere, kök depo tarihinin tam bir kopyasını alır. Ancak tüm yolunuzu tutacaktır: Git, veri tabanının kök klasörünün gizli .git/klasöründe bulunan bir dosya türündeki veritabanında saklar .

Ancak depo klasöründe gördüğünüz gizli olmayan dosyalar nelerdir?

Siz git clonebir depoda, Git birkaç şey yapar. Kabaca:

  1. Hedef klasörü ve içinde .git/"veritabanı" olan alt klasörü oluşturur.
  2. Bu aktarır referansları kökeni deponun veritabanının (etiketleri, dallar vs.) ve onlara bir slighly modifiye adını veren, yeni veritabanında bunların bir kopyasını yapar "uzak" referans olarak işaretler onları.
  3. Bu referansların işaret ettiği tüm revizyonları (yani dosya ağacı durumları) ve bu revizyonların doğrudan veya geçişli olarak işaret ettiği tüm revizyonları (ebeveynleri ve ataları) yeni veritabanına aktarır ve depolar; Yeni depoda mevcut olan bir şeyi işaret edin.
  4. Menşe havuzunun varsayılan şubesine karşılık gelen uzaktan revizyonu takip eden yerel bir şube yaratır (genellikle master).
  5. Yerel şubeyi kontrol eder.

Bu son adım Git’in bu şubenin işaret ettiği revizyona bakması ve orada depolanan dosya ağacının (veritabanı bazı sıkıştırma ve de-çoğaltma yöntemlerini kullanır) depodaki kök klasöründe açması anlamına gelir. Bu kök klasör ve tüm alt klasörleri (özel .gitalt klasör hariç ), deponuzun "çalışan kopyası" olarak bilinir. Şu anda kullanıma alınmış revizyon / şubenin içeriği ile etkileşimde bulunduğunuz yer burasıdır. Onlar sadece normal klasörler ve dosyalar. Bununla birlikte, havuz başındaki (revizyonların ve referansların "veritabanı") kendileri ile etkileşime geçmek için gitkomutları kullanırsınız .

Git şubelerini görmek ve Git şubeleriyle etkileşime girmek

Şu anda bir repo klonlamak ve gitk kullanarak belirli bir dalı klonlamak.

Aldığım sürüm gitkdepoları klonlayamıyor. Yalnızca repo geçmişini görüntüleyebilir, şubeler oluşturabilir ve şubelere bakabilir. Ayrıca, bir dalda "klonlama" yoktur. Sadece depoları klonlayabilirsiniz.

Eğer kullanarak repo klonlamak kastettiniz git clone ...kullanarak, daha sonra ve gitk, kontrol şube?

Proje klasörü yalnızca o dalın içeriğini içeriyor ve tüm dalları SVN'deki gibi göremiyorum, bu benim için biraz kafa karıştırıcı.

[...]

  • Tanımladığım git işleminin "standart" olup olmadığını ve ne kadar doğru olduğunu bilmek isterim [...]

Evet, bu oldukça standart.

  • Kullanarak bir havuzu klonla git clone ...
  • Üzerinde çalışmak istediğiniz şubeye göz atın git checkout ...veya şunun gibi bir grafik aracı kullanın:gikt

Yerel depodaki tüm şubeleri GIT kullanarak görmenin kolay bir yolunu bulamıyorum.

  • [...] veya smt özlüyorum.

Olabilir:

  • ile yerel şubeleri listeleyebilirsiniz git branch
  • uzak dalları git branch -rveyagit branch -a
  • Kullanabileceğiniz gitkile çağırarak (bütün dalları etiketler vs. yerel repo hakkında bildiği) tam geçmişini görüntülemek için

    gitk --all
    

Paralel olarak birden fazla dalla nasıl çalışılır

  • Ayrıca, aynı anda iki dal üzerinde çalışmam gereken bir süreçle nasıl başa çıkacağımı bilmek istiyorum. Örneğin, ana üzerinde bir düzeltme yapmam gerekiyor, ancak başka bir dalın içeriğini de tutmam gerekiyor.

Burada farklı senaryolar var:

Yeni (henüz yaratılmamış) bir değişikliğin birden fazla şubeye uygulanması gerekiyor

Bu iş akışını kullanın:

  1. cTüm bu şubelerin atalarında bulunan bir revizyondan (örneğin, değişiklik bir hata olduğunda hata çıkaran revizyon) ya da (tüm ataları dahil) kabul edilebilecek bir revizyondan yeni bir şube oluşturun . tüm bu şubeler.
  2. Bu yeni daldaki değişikliği yapın ve kabul edin c.
  3. bDeğişime ihtiyaç duyan her şube için:

    1. Çıkış yap b:

      git checkout b
      
    2. Birleştirme ciçine b:

      git merge c
      
  4. Şubeyi kaldır c:

    git branch --delete c
    

Farklı bir dalda mevcut bir değişiklik gerekiyor

(... ama bu değişikliğin bulunduğu yerde yapılan diğer değişiklikler olmadan)

  1. Değişikliğin gerekli olduğu şubeye göz atın
  2. Cherry-pick-up değişiklik (ler) sırayla değişiklik

Bir dalda a, bir veya daha fazla dosyayı farklı bir dalda bulundukları tam olarak değiştirmek istersiniz.b

  1. Ödeme a
  2. Dosya içeriğini şubeden al b:

    git checkout b -- path/to/a/file.txt path/to/another/file.cpp or/even/a/complete/directory/ ...
    

    ( git checkoutGeçiş yolları dışında, bu durum şubeye geçiş yapmazb , yalnızca istenen dosya içeriğini oradan alır. Bu dosyalar zaten var olabilir veya olmayabilir. Bunları ayaparlarsa içeriklerinin üzerine yazılır b.)

Bir dalda çalışırken, başka bir dalda işlerin nasıl olduğuna bakmak istersiniz.

Üzerinde çalışmak istediğiniz şubeye göz atın.

Sonra diğer şubeye bakmak için,

  • ya şu anda teslim edilmemiş revizyonların içeriğini görüntülemenizi sağlayan grafik araçlarını kullanın (örneğin gitk, radyo düğmelerini "yama" dan "ağaç" a değiştirmeyi denediğinizde)
  • veya depoyu geçici bir dizine kopyalayın ve oradaki diğer şubeye göz atın.
  • veya başka bir şubeye göz atabileceğiniz aynı depodangit worktree ayrı bir çalışma dizini oluşturmak için kullanın (yani mevcut yerel depo dizininizdeki veritabanını kullanarak )..git/

Son iş akışı stashiçin idealdir.
CAD97

@ CAD97, ilk dalı üzerinde çalışmaya devam etmek istemezseniz, ikincisini paralel olarak bakarken . git stashbitmemiş işleri yoldan çıkarmak iyidir, örneğin dalları değiştirmek ve daha sonra geri dönmek.
das-g

1
"mercurial iş akışları genellikle farklı gelişim için tüm depoyu klonlayarak çalışır" - Eh, bunu duydum, ancak Git şubelerini isteyen çoğu kişi sadece tüm depoyu klonlamak yerine yer imlerini kullanıyor. Çok daha kolay.
Kevin

@Kevin Olabilir. Bir süre önce en son mercurial kullandım, bu yüzden belki o zamanlar farklıydı. (Belki de sadece bununla kullandığım topluluğun iş akışlarıydı.)
das-g

Belki de Hg Init metni "[...] çünkü Mercurial yolunu dallandırmanız gerekiyordu, havuzları klonlayarak [...]" bu konuda da güncellenmeli.
das-g

31

SVN'de genellikle yerel makinemde projemdeki tüm dalları içeren bir repo alıyorum ve şubem için ilgilendiğim ve çalıştığım şubenin klasörünü seçiyordum.

Bagajın üstündeki dizini kontrol etmediğiniz sürece, Subversion'da genellikle tüm şubeleri yerel olarak kullanamazsınız . Git'te tüm içerik (taahhütler, mesajlar, dallar vb.) Her kopyaya her zaman kopyalanır.

Şu anda bir repo klonlamak ve gitk kullanarak belirli bir dalı klonlamak.

Mümkün değil, yukarıya bakın. Yapabilirsin git checkout branch-nameama yapamazsın git clone something branch-name. Subversion'da dallar klasördür. Git’te şubeler kesinleşmiş bir işaretçidir.

Yerel depodaki tüm şubeleri GIT kullanarak görmenin kolay bir yolunu bulamıyorum.

Run git branch. Varsayılan olarak sadece yerel dalları gösterir. git branch --remoteUzak dalları görmek için kullanın .


4
Hm. "Varsayılan olarak yalnızca yerel dalları gösterir." Yerel olmayan başka tür dallar vardır . Ancak “Git'te tüm içerik (taahhütler, mesajlar, dallar vb.) Her zaman her kopyaya kopyalanır” diyorsunuz . . Bunu biraz kafa karıştırıcı buluyorum, çünkü tüm şubeler kopyanıza kopyalanırsa, yerel olmayan gizemli şubeler nelerdir? Belki de bir yorum alanına cevap vermek çok karmaşık.
boru

2
@pipe Değişikliklerinizi yaptığınızda, bunu şubenin işaret ettiği taahhüdü değiştiren yerel bir işlem oluşturarak yaparsınız. Başkalarının bu değişiklikleri almasını istiyorsanız, bu değişiklikleri uzak havuza itmeniz gerekir. Bu uzak dalda bu yeni taahhüdü işaret eder. Şimdi herkes bu değişiklikleri oradan çekebilir ve sonuç olarak herkes sonunda
havuzun

9
@pipe Öncelikle, kullanarak sadece bir dal klonlayabilirsiniz --single-branch(sadece uç ile --depth 1) Git tarafından bilinen yerel ve uzak dallar arasındaki fark sadece bir tür etikettir. Uzak dallara (genellikle origin) uzak kaynağın adı eklenir . Yerel şubelerin bu öneki yok. Ancak sonuçta, veriler yerel olarak mevcuttur (siz --single-branchveya benzeri bir şey yoksa). git checkout $branchnameYerel olmayan ancak uzak bir şube bulunmayan bir şube ile çalıştığınızda , git otomatik olarak uzaktan kumandayı "izleyen" bir yerel şube kurar.
Jonas Schäfer

"Bagajın üstündeki dizini kontrol etmediğiniz sürece" - Benim deneyimim bunun oldukça yaygın olması, çünkü birleştirmeyi çok daha kolay hale getiriyor. (Versiyon etiketleri yerine tek bir "canlı" şube kullanmamıza rağmen, kodun sadece 2-3 kopyası olabilir)
Izkata 19:17

1
@ Izkata "birleştirmeyi çok kolaylaştırıyor", değil mi?
HorusKol

3

Bu, ile etiketlendiği için , SVN bilgisi eksikliğinin ihmal edilebilir olduğunu umuyorum.

Şu anda bir repo klonlamak ve gitk kullanarak belirli bir dalı klonlamak.

Uzak havuzun tamamını yalnızca belirli bir dalda klonlamaktasınız.

Depo, en iyi şekilde bir veritabanı olarak düşünüldüğü için uzak veritabanının mevcut durumunu klonlarsınız. Fakat ondan sonra, bu veritabanının kendi kopyası üzerinde çalışıyorsunuz; taahhüt ederseniz, yerel veritabanınızı değiştirirsiniz.

fetchKomut uzak biri ile senkronize yerel veri tabanını tutmak için kullanılır.

Genellikle bu yerel veri tabanından, üzerinde çalışmak için bir şubeye ödeme yaparsınız. Bu, şu anki çalışmanızın başladığı, git için içsel bir işaretleyici gibisi yoktur.

Diyelim ki basit bir depo üzerinde çalışıyorsunuz, ayrıca dalın olmadığı yerde , "sihri" ortaya çıkarmak için klasöre masterbakabilirsiniz .git:

Son (üzerinde taahhüt varsayın masteredildi) 182e8220b404437b9e43eb78149d31af79040c66, tam olarak göreceksiniz altından cat .git/refs/heads/master.

Bundan yeni bir daldan dalladığınızda git checkout -b mybranch, aynı göstericiyi dosyada bulacaksınız cat .git/refs/heads/mybranch.

Şubeler "işaretçiler" den başka bir şey değildir. "Çalışan" işaretçisi a olarak adlandırılır HEAD.

Nerede olduğunuzu bilmek istiyorsanız HEAD:

cat .git/HEADHangi diyor ki ref: refs/heads/mybranch, hangi sırayla ( cat .git/refs/heads/mybranch) bir karma iş78a8a6eb6f82eae21b156b68d553dd143c6d3e6f

Gerçek taahhütler objectsklasörün altında saklanır (nasıl bir konudur).

Proje klasörü yalnızca o dalın içeriğini içeriyor ve tüm dalları SVN'deki gibi göremiyorum, bu benim için biraz kafa karıştırıcı.

working directoryGit veritabanını bir bütün olarak karıştırmayın . Yukarıda söylediğim gibi, çalışma dizininiz yalnızca bir alt kümenin (belki de) anlık görüntüsüdür.

Diyelim ki farklı dallarınız var, çalışma dizininiz sadece o dalda çalışmaya adanmış (çalışmayı oradan başka bir yere koyabilmenize rağmen).

Genellikle, proje için hangi şubelerin tanımlandığını görmek istiyorsanız,

  • git branch yerel şubeler için
  • git branch --remote uzak şubeler için
  • git branch -a her ikisi için de

(veya git branch -v)

Git, dağıtılmış bir sürüm kontrol sistemi olduğu için, sadece yerel olarak / uzaktaki farklı şubeleri yapmak mümkün değildir.

Tipik iş akışım:

  • dallanma özelliği dallanma özelliği
  • bundan bir WIP dalı (devam eden iş) dalı
  • istediğin gibi çalış - tek bir çizgiden sonra bile olsa; önemli değil

Özellik tamamlandığında:

  • WIPşubeyi ezmek / yeniden işlemek (etkileşimli rebasing ile) = bundan tek bir taahhütte bulunmak
  • WIPdalı özellik dalıyla birleştirin ve (github ile çalışıyorsanız bu teklife "çekme isteği" olarak adlandırılır) kararlı (ana) dalıyla bütünleşmesini teklif edin.

Ayrıca, aynı anda iki dalda wprl yapmam gereken bir işlemi nasıl ele alacağımı bilmek istiyorum. Örneğin, ana üzerinde bir düzeltme yapmam gerekiyor, ancak başka bir dalın içeriğini de tutmam gerekiyor.

Projenizin nasıl yapılandırıldığına bağlıdır:

Diyelim ki istikrarlı bir efendin var. Ve özellikler yalnızca bu sabit daldan geliştirilir - bu nedenle genellikle bir özellik dalının arkasında bulunur. Öyleyse, özellik dalının kökü olacak ana üzerine son bir söz vermeniz gerekirdi.

Daha sonra, ana dal üzerinde bir taahhütte bulunacaktınız ve her iki şubeyi bir araya getirip birleştirmeme veya yeniden yapılandırmaya karar verebileceksiniz (ki bu, ileri düzeyde ihtiyacı olan kullanıcılar için bir tür birleştirmedir).

Veya her zaman dallarda değişiklik yapabilir (ör. master) Ve bunları başka dallara kopyalayabilirsiniz.

Şubeyi içeren klasörleri GIT'deki repo'dan klonlanmış yapmak için önerilen ad kuralları nedir, örneğin, myproject-branchname

Sana bağlı.

Genellikle, depo adı ile bitirdiniz.

Ancak bunun istenmediği durumlar vardır:

Örn: oh-my-zsh 'ı git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh burada klonlamanız .oh-my-zshaçıkça hedef olarak adlandırılmıştır.


2

Git clone aslında tüm depoyu klonlar, ancak çalışma dizini varsayılana ayarlar (genellikle ana).

git branchYerel şubeleri görmek veya git branch -ruzak şubeleri görmek ve ardından git checkoutmevcut şubeye göre mevcut bir şubeye geçmek veya yeni bir şubeye geçmek için başka şubeleri görebilirsiniz .

Daha fazla ayrıntı için git belgelerini okumalısınız ve Atlassian'ın da iyi makaleleri var.


0

Git ve svn'deki şubeler temelde farklı şeylerdir.

Svn'de bir dal (veya bir etiket) depodaki bir dizindir.

Git'te bir dal (veya bir etiket) bir taahhüdün göstergesidir.

Eğer svn ile repo kökünden ödeme yapmak isterseniz yapabilirsiniz. Bu, her dal ve etiketi aynı anda kontrol ettirdiğiniz anlamına gelir. Açıkçası bu svn kullanmanın normal yolu değildir.

Bir git şubesi bir dizin değildir, bu nedenle "reponun kökenini kontrol etmek" için eşdeğer yoktur. Birden fazla çalışan ağaç için bir miktar destek var, sanırım gerçekten isterseniz her şubeyi aynı anda kontrol etmek için bir senaryoyu birlikte yazabilirdiniz, ancak bunu yapmak oldukça alışılmadık bir düşünce olurdu.

Ayrıca SVN ile tam olarak bir repo var. Git ile her geliştiricinin kendi deposu vardır. Bu, geliştiricilerin çevrimdışı çalışabileceği, ancak farklı geliştiricilerin her dalda ne olduğu konusunda farklı fikirleri olabileceği anlamına gelir.

Dizinler olmak ve svn'nin basit lineer tarih modeli sayesinde svn şubelerinin sağlam geçmişleri vardır. Eğer tarihte x dalı üzerinde ne olduğunu bilmek istiyorsanız, kolayca bu soruyu sorabilirsiniz.

Öte yandan Git şubelerinin geçmişi yoktur. “Reflog” var ancak uzun vadeli bir tarihe göre felaket kurtarma mekanizması olarak düşünülüyor. Özellikle reflog uzaktan okunamıyor ve çıplak repolar için varsayılan olarak devre dışı bırakılıyor.

Elbette taahhütlerin geçmişi var, ancak bu tarihler "z tarihinde repo y'in x şubesinde" sorusunu cevaplamak için yeterli değil.

Git'i kullanarak yerel havuzumdaki tüm dalları görmenin kolay bir yolunu bulamıyorum.

Tüm yerel şubeleri "git branch" yazarak listeleyebilirsiniz.

"Git branch -a" kullanarak tüm şubeleri hem yerel hem de uzaktan listeleyebilirsiniz.

Ayrıca, aynı anda iki dal üzerinde çalışmam gereken bir süreçle nasıl başa çıkacağımı bilmek istiyorum. Örneğin, ana üzerinde bir düzeltme yapmam gerekiyor, ancak başka bir dalın içeriğini de tutmam gerekiyor.

Birkaç seçenek var.

Değişikliklerinizi "diğer branşta" kabul edebilir, orada işinizi yapmak için ustalaşmaya ve sonra geri dönebilirsiniz.

Ayrıca fazladan çalışan bir ağaç da oluşturabilirsiniz. Google sözdizimi ile ilgili ayrıntılar için "git-worktree".

Git içeren repo'dan klonlanmış dalı içeren klasörleri yapmak için önerilen ad kuralları nedir, örneğin, proje-dal adım?

Yerleşik bir kongre olduğunu sanmıyorum. Birden fazla çalışma ağacının aynı anda kontrol edilmesi kural değil istisnadır.


2
bu cevap eksik görünüyor, neden?
tatarcık
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.