Apa perbedaan antara "git branch" dan "git checkout -b"?

Jawaban:

259

git checkout -b BRANCH_NAME membuat cabang baru dan memeriksa sementara cabang baru git branch BRANCH_NAME membuat cabang baru tetapi meninggalkan Anda di cabang yang sama.

Dengan kata lain, git checkout -b BRANCH_NAMElakukan hal berikut untuk Anda.

git branch BRANCH_NAME    # create a new branch
git checkout BRANCH_NAME  # then switch to the new branch
Fatih Acet
sumber
44

git branch membuat cabang tetapi Anda tetap di cabang saat ini yang telah Anda periksa.

git checkout -b membuat cabang dan memeriksanya.

Ini dapat dianggap sebagai bentuk singkat dari:

git branch name
git checkout name
manojlds
sumber
Anggap saja: "cabang git menciptakan cabang tetapi Anda tetap di cabang saat ini DARI YANG Anda periksa."
Akash Verma
28
  • git branch: Menunjukkan semua cabang Anda
  • git branch newbranch: Membuat cabang baru
  • git checkout -b newbranch: Membuat cabang baru dan segera beralih ke cabang itu. Ini sama dengan git branch newbranchdiikuti oleh git checkout newbranch.
Michel Pereira
sumber
24

Sintaks lengkap:

git checkout -b [NEW_BRANCH] [FROM_BRANCH]

[FROM_BRANCH] adalah opsional. Jika tidak ada FROM_BRANCH, git akan menggunakan cabang saat ini.

Tuong Le
sumber
7

Ada juga bendera lain untuk disebutkan, yang relatif terhadap ini ..

git checkout -B BRANCH_NAME

Ini adalah perintah yang sangat berguna yang saya gunakan baru-baru ini. Perintah ini memeriksa cabang yang Anda tentukan, dan mengatur ulang cabang berdasarkan cabang sumber.

ddavison
sumber
2
Bisakah Anda menjelaskan lebih lanjut? Saya tidak tahu apa arti reset untuk git
Mikaël Mayer
3
Dari manual pada git:If -B is given, <new_branch> is created if it doesn't exist; otherwise, it is reset. This is the transactional equivalent of $ git branch -f <branch> [<start point>] $ git checkout <branch>
ddavison
Jadi maksud Anda Anda dapat menggunakan kembali cabang yang ada?
Mikaël Mayer
1
Apakah checkout -Bberbahaya jika cabang tempat Anda berpindah dibagikan oleh orang lain? Saya menggunakan ini baru-baru ini dan sepertinya secara otomatis menggabungkan perubahan di cabang saya yang lain ke cabang tempat saya beralih.
Jeff
jika Anda mengambil cabang pengembang lain dari jarak jauh, dan lakukan git checkout -Bya, itu akan bergabung, atau bahkan mungkin mengganti
ddavison
-1

Ada bentuk-bentuk dari kedua perintah yang mirip (melihat git-scm docs Versi 2.11.1):

git branch <branchname> <start-point>

dan

git checkout -b <new_branch> <start_point>

Yang terakhir mengeksekusi perintah cabang pertama dan kemudian menambahkan checkout. Dalam bentuk itu secara eksplisit merujuk pada dokumen git-branch:

Menentukan -b menyebabkan cabang baru dibuat seolah-olah git-branch [2] dipanggil dan kemudian diperiksa

Pshemy108
sumber
1
Ini tidak menambahkan informasi baru apa pun atas jawaban yang diterima dari 2011.
melpomene
Ini sebenarnya menambah informasi baru tentang <start-point>. Yang secara pribadi saya temukan cukup berguna untuk membuat cabang pada objek yang terletak di tempat lain tanpa harus checkout objek pertama atau memindahkan cabang saat ini. Menggunakan notasi sebagai [FROM_BRANCH] padahal sebenarnya referensi-git yang dimaksudkan tidak berguna menurut saya.
Pshemy108
Argumen kedua opsional tidak relevan dengan pertanyaan. Itu sama antara kedua perintah, dan OP menanyakan perbedaannya. (Jika Anda benar-benar berpikir itu penting, saya hanya akan menambahkan komentar pada jawaban yang diterima.)
melpomene
-1

Pada dasarnya:

Cabang A-git memungkinkan Anda membuat cabang sederhana dan sederhana.

B -git checkout -b memungkinkan Anda membuat cabang dan beralih ke cabang itu secara bersamaan.

Kapan Anda akan menggunakan yang mana? 1- git cabang ketika Anda ingin membuat cabang tetapi tetap di cabang saat ini. 2- checkout git -b ketika Anda ingin membuat dan beralih. Jika Anda melihatnya intuitif untuk membuat cabang dan beralih ke sana. Jadi pilihan ada di tangan Anda :)

pengguna2238769
sumber
4
Ini tidak menambahkan informasi baru apa pun atas jawaban yang diterima dari tahun 2011.
melpomene