Apa perbedaan antara git clone dan checkout?

Jawaban:

337

Halaman manual untuk checkout: http://git-scm.com/docs/git-checkout

Halaman manual untuk klon: http://git-scm.com/docs/git-clone

Singkatnya, klon adalah untuk mengambil repositori yang tidak Anda miliki, checkout adalah untuk berpindah antar cabang dalam repositori yang sudah Anda miliki.

Catatan: bagi mereka yang memiliki latar belakang SVN / CVS dan baru ke Git, setara dengan git clonedi SVN / CVS adalah checkout. Kata-kata yang sama dari istilah yang berbeda sering membingungkan.

Lilleaas Agustus
sumber
41
checkoutdapat digunakan untuk hal-hal lain juga, seperti menimpa file Anda di copy pekerjaan Anda dengan versi file itu dari revisi lain.
svick
8
dan kapan Anda menggunakan "pull" vs "checkout"?
Kokodoko
27
pull adalah pengambilan plus gabungan, checkout adalah operasi lokal yang hanya beroperasi pada data yang sudah diambil. Jadi tidak seperti checkout svn sama sekali.
Agustus Lilleaas
13
Datang dari dunia SVN, saya juga bingung. Wow .. berantakan sekali. Dalam dunia yang ideal saya akan memaksa setiap produsen sistem kontrol sumber untuk menggunakan istilah yang sama.
Zoltán Tamási
5
Fork adalah istilah github dan tidak terkait dengan git itu sendiri.
Agustus Lilleaas
123

git clone adalah untuk mengambil repositori Anda dari server git jarak jauh.

git checkout adalah untuk mengecek status repositori yang Anda inginkan (seperti cabang atau file tertentu).

Misalnya, Anda saat ini di cabang master dan Anda ingin beralih ke mengembangkan cabang.

git checkout develop_branch

Misalnya, Anda ingin checkout ke status tertentu dari file tertentu

git checkout commit_point_A -- <filename>

Berikut ini adalah referensi yang baik bagi Anda untuk belajar Git, membuat Anda lebih mudah memahami.

Kit Ho
sumber
20
"dari server git jarak jauh" - tidak perlu untuk server menjadi jauh. git clonejuga akan bekerja dengan repo lokal.
SET
1
Terima kasih atas tautan ke referensi visual ke git!
David Pointer
@Kit Ho: Tautan baik-baik saja sebagai referensi, tetapi itu tidak banyak membantu bagi seseorang dengan pertanyaan dasar tentang git seperti orang di atas. Seperti artikel itu sendiri mengatakan, "Setelah Anda tahu sedikit tentang cara kerja git, situs ini dapat memperkuat pemahaman Anda"
SN
Definisi sirkuler tidak begitu membantu. Kata "fetch" yang digunakan untuk menggambarkan clone berguna dan menambahkan makna, tetapi frasa "checkout to checkout ..." tidak menambahkan makna, juga tidak benar-benar membantu membedakan perbedaan antara dua operasi.
C Perkins
11

Satu hal yang perlu diperhatikan adalah tidak adanya "Copyout" dalam git. Itu karena Anda sudah memiliki salinan lengkap di repo lokal Anda - repo lokal Anda menjadi salah clonesatu repo hulu pilihan Anda. Jadi, Anda memiliki pribadi yang efektif checkoutuntuk semuanya , tanpa menaruh 'kunci' pada file-file itu di repo referensi.

Git memberikan nilai hash SHA1 sebagai mekanisme untuk memverifikasi bahwa salinan yang Anda miliki dari file / direktori tree / commit / repo persis sama dengan yang digunakan oleh siapa pun yang dapat mendeklarasikan hal-hal sebagai "Tuan" dalam hierarki kepercayaan. Ini menghindari semua 'kunci' yang menyebabkan sebagian besar sistem SCM tersedak (dengan masalah umum seperti salinan pribadi, penggabungan besar, dan tidak ada kontrol nyata atau pengelolaan kode sumber ;-)!

Philip Oakley
sumber
4
Pertanyaannya tidak menyebutkan kunci dan harus diasumsikan secara default pada saat ini bahwa seseorang tidak terbiasa dengan konsep ini sehingga perbedaan dari VCSes lama ini harus dijelaskan hanya jika ditanyakan secara eksplisit.
wRAR
6

Cukup git checkout, ada 2 kegunaan

  1. Beralih di antara cabang lokal yang ada seperti git checkout <existing_local_branch_name>
  2. Buat cabang baru dari cabang saat ini menggunakan flag -b. Misalkan jika Anda berada di cabang master maka git checkout -b <new_feature_branch_name>akan membuat cabang baru dengan isi master dan beralih ke cabang yang baru dibuat

Anda dapat menemukan lebih banyak opsi di situs resmi

Khader MA
sumber
Bagus. Ini -bpilihan mengagumkan yang menciptakan cabang lokal baru dan cek itu keluar juga pada saat yang sama dalam perintah tunggal. Menyukainya!
RBT
2

checkout dapat digunakan untuk banyak kasus:

Kasus 1 : beralih antar cabang di repositori lokal Misalnya: git checkout exists_branch_to_switch

Anda juga dapat membuat cabang baru dan beralih melalui kasus ini dengan -b

git checkout -b new_branch_to_switch

Kasus kedua : pulihkan file dari x rev

git checkout rev file_to_restore ...

Tuan-tuan
sumber