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

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

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.

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.


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.


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


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 :)


4
Ini tidak menambahkan informasi baru apa pun atas jawaban yang diterima dari tahun 2011.
— melpomene
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.