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.