Jika Anda menggunakan bentuk branch
perintah ini (dengan titik awal), tidak masalah di mana Anda HEAD
berada.
Apa yang kamu lakukan:
git checkout dev
git branch test 07aeec983bfc17c25f0b0a7c1d47da8e35df7af8
Pertama, Anda mengatur HEAD
ke cabang dev
,
Kedua, Anda memulai cabang baru saat komit 07aeec98
. Tidak ada bb.txt pada komit ini (menurut repo github Anda).
Jika Anda ingin memulai cabang baru di lokasi yang baru saja Anda periksa, Anda dapat menjalankan cabang tanpa titik awal:
git branch test
atau seperti yang telah dijawab oleh orang lain, buat cabang dan checkout di sana dalam satu operasi:
git checkout -b test
Saya pikir Anda mungkin bingung dengan fakta yang 07aeec98
merupakan bagian dari cabang dev
. Memang benar bahwa komit ini adalah leluhur dari dev
, perubahannya diperlukan untuk mencapai komit terbaru di dev
. Namun, itu adalah komitmen lain yang diperlukan untuk mencapai yang terbaru dev
, dan ini belum tentu ada dalam riwayat 07aeec98
.
8480e8ae
(di mana Anda menambahkan bb.txt) misalnya tidak ada dalam riwayat 07aeec98
. Jika Anda bercabang 07aeec98
, Anda tidak akan mendapatkan perubahan yang diperkenalkan oleh 8480e8ae
.
Dengan kata lain: jika Anda menggabungkan cabang A dan cabang B menjadi cabang C, lalu membuat cabang baru pada komit A, Anda tidak akan mendapatkan perubahan yang diperkenalkan di B.
Sama di sini, Anda memiliki dua cabang paralel master dan dev, yang Anda gabungkan di dev. Bercabang dari komit master (lebih lama dari gabungan) tidak akan memberi Anda perubahan dev.
Jika Anda ingin mengintegrasikan perubahan baru secara permanen dari master ke dalam cabang fitur Anda, Anda harus menggabungkannya master
dan melanjutkan. Ini akan membuat komit gabungan di cabang fitur Anda.
Jika Anda belum dipublikasikan cabang fitur Anda, Anda juga dapat rebase mereka pada master diperbarui: git rebase master featureA
. Bersiaplah untuk menyelesaikan kemungkinan konflik.
Jika Anda menginginkan alur kerja tempat Anda dapat bekerja pada cabang fitur yang bebas dari gabungan komitmen dan masih berintegrasi dengan perubahan yang lebih baru di master, saya merekomendasikan hal berikut ini:
- mendasarkan setiap cabang fitur baru pada komit master
- membuat
dev
cabang pada komit master
- saat Anda perlu melihat bagaimana cabang fitur Anda terintegrasi dengan perubahan baru di master, gabungkan master dan cabang fitur menjadi
dev
.
Jangan dev
langsung berkomitmen , gunakan hanya untuk menggabungkan cabang lain.
Misalnya, jika Anda mengerjakan fitur A dan B:
a---b---c---d---e---f---g -master
\ \
\ \-x -featureB
\
\-j---k -featureA
Gabungkan cabang menjadi dev
cabang untuk memeriksa apakah mereka bekerja dengan baik dengan master baru:
a---b---c---d---e---f---g -master
\ \ \
\ \ \--x'---k' -dev
\ \ / /
\ \-x---------- / -featureB
\ /
\-j---k--------------- -featureA
Anda dapat terus mengerjakan cabang fitur Anda, dan terus menggabungkan perubahan baru dari cabang master dan fitur menjadi dev
secara teratur.
a---b---c---d---e---f---g---h---i----- -master
\ \ \ \
\ \ \--x'---k'---i'---l' -dev
\ \ / / /
\ \-x---------- / / -featureB
\ / /
\-j---k-----------------l------ -featureA
Saat tiba waktunya untuk mengintegrasikan fitur baru, gabungkan cabang fitur (bukan dev
!) Ke dalam master.