Git clone ve checkout arasındaki fark nedir?


Yanıtlar:


337

Ödeme için kılavuz sayfası: http://git-scm.com/docs/git-checkout

Klon için man sayfası: http://git-scm.com/docs/git-clone

Özetlemek gerekirse, klon, sahip olmadığınız depoları almak içindir, ödeme, zaten sahip olduğunuz bir havuzdaki dallar arasında geçiş yapmak içindir.

Not: SVN / CVS arka planı olan ve Git için yeni olanlar için git cloneSVN / CVS'deki eşdeğeri checkout. Farklı terimlerdeki aynı ifadeler genellikle kafa karıştırıcıdır.


41
checkoutçalışma kopyanızdaki bir dosyanın üzerine başka bir revizyondaki bir sürümünün üzerine yazmak gibi başka şeylerde de kullanılabilir.
svick

8
ve ne zaman "çek" vs "ödeme" kullanıyorsunuz?
Kokodoko

27
çekme getirme ve birleştirme işlemidir, ödeme yalnızca önceden getirilmiş veriler üzerinde çalışan yerel bir işlemdir. Yani svn kasası gibi değil.
Ağustos Lilleaas

13
SVN dünyasından geldiğimde de kafam karıştı. Vay be .. ne dağınıklık. İdeal bir dünyada her kaynak kontrol sistemi üreticisinin aynı terimleri kullanmasını zorunlu kılıyorum.
Zoltán Tamási

5
Çatal bir github terimidir ve git'in kendisi ile ilgili değildir.
Ağustos Lilleaas

123

git clone , depolarınızı uzak git sunucusundan almaktır.

git checkout , deponuzda istediğiniz dalları (şubeler veya belirli dosyalar gibi) kullanıma almaktır.

Örneğin, şu anda ana branştasınız ve geliştirme branşına geçmek istiyorsunuz.

git checkout develop_branch

Örneğin, belirli bir dosyanın belirli bir durumuna göz atmak istiyorsunuz

git checkout commit_point_A -- <filename>

İşte Git'i öğrenmeniz için iyi bir referans , daha kolay anlamanıza izin veriyor.


20
"uzak git sunucusundan" - sunucunun uzak olması gerekli değildir. git cloneyerel depolarla da çalışır.
SET

1
Git'e görsel referans bağlantısı için teşekkürler!
David Pointer

@Kit Ho: Bağlantı referans olarak iyidir, ancak git hakkında yukarıdaki kişi gibi temel soruları olan biri için pek fazla yardımı yoktur. Makalenin kendisinin de dediği gibi, "Git'in nasıl çalıştığı hakkında biraz bilgi sahibi olduğunuzda, bu site anlayışınızı sağlamlaştırabilir"
SN

Dairesel tanımlar o kadar yardımcı olmuyor. Klonu tanımlamak için kullanılan "getir" kelimesi yararlıdır ve anlam katar, ancak "ödeme kasada ödeme ..." ifadesi anlam eklemez ve aslında iki işlem arasındaki farkı ayırt etmede yardımcı olmaz.
C Perkins

11

Dikkat edilmesi gereken bir şey, git içinde herhangi bir "Kopyalama" olmamasıdır. Bunun nedeni , yerel repoınızda zaten tam bir kopyaya sahip olmanızdır - yerel repo clone, seçtiğiniz yukarı akış repolarından biridir. Böylece etkili bir kişisel olması checkoutve her şeyin referans repo bu dosyalarda bazı 'kilit' koymadan.

Git, SHA1 karma değerlerini, bir dosya / dizin ağacı / commit / repo'dan aldığınız kopyanın, güven hiyerarşisinde işleri "Master" olarak tanımlayabilenlerinkiyle tamamen aynı olduğunu doğrulama mekanizması olarak sağlar. Bu, çoğu SCM sisteminin boğulmasına neden olan tüm 'kilitleri' önler (özel kopyaların olağan sorunları, büyük birleşmeler ve kaynak kodunun gerçek kontrolü veya yönetimi yok ;-)!


4
Soru kilitlerden bahsetmemektedir ve bu günlerde varsayılan olarak bir kişinin bu konsepte aşina olmadığı varsayılmalıdır, bu nedenle eski VCS'lerden bu farklılıklar sadece açıkça sorulduğunda açıklanmalıdır.
wRAR

6

Basitçe git checkout 2 kullanım var

  1. Gibi mevcut yerel şubeler arasında geçiş yapma git checkout <existing_local_branch_name>
  2. -B bayrağını kullanarak geçerli daldan yeni bir dal oluşturun. Diyelim ki ana git checkout -b <new_feature_branch_name>daldaysanız, ana içeriğin bulunduğu yeni bir dal oluşturacak ve yeni oluşturulan dala geçeceksiniz

Resmi sitede daha fazla seçenek bulabilirsiniz


Güzel. Bu -bseçenek, yeni bir yerel şube oluşturan ve aynı anda tek komutla kontrol eden harika. Sevdim!
RBT

2

checkout birçok durumda kullanmak olabilir:

1. durum : yerel depodaki şube arasında geçiş yapma Örneğin: git checkout exists_branch_to_switch

Ayrıca yeni şube oluşturabilir ve bu davada -b

git checkout -b new_branch_to_switch

2. durum : dosyayı x rev'den geri yükle

git checkout rev file_to_restore ...

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.