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.
merge the feature branches (not dev!) into master
?dev
cabang. Anda harus menjaga fitur cabang Anda tetap spesifik.dev
hanya berisi komit gabungan. Lebih masuk akal untuk menggabungkan semua fitur baru secara langsungmaster
, daripada menggabungkan fitur-fitur tersebut kemudian menggabungkan hasilnyamaster
.dev
dengan hanya fiturA
B
danC
digabungkan menjadimaster
identik dengan penggabungan individualA
B
danC
ke dalammaster
. Jika tidak, itu menantang pemahaman saya tentang cara kerja git dan saya akan sangat penasaran mengapa!Anda memiliki argumen dengan urutan yang salah:
dan untuk itu, tidak masalah cabang mana yang diperiksa; itu akan melakukan apa yang Anda katakan. (Jika Anda menghilangkan argumen komit, defaultnya adalah membuat cabang di tempat yang sama dengan yang sekarang.)
Jika Anda ingin memeriksa cabang baru saat Anda membuatnya:
dengan perilaku yang sama jika Anda menghilangkan argumen komit.
sumber
Anda dapat melakukan ini secara lokal seperti yang disebutkan semua orang menggunakan
Atau, Anda dapat melakukan ini di github itu sendiri, ikuti langkah-langkahnya:
1- Di repositori, klik file
Commits
.2- pada komit yang ingin Anda buat bercabang, klik
<>
untuk menelusuri repositori pada titik ini di riwayat.3- Klik
tree: xxxxxx
di kiri atas. Ketik saja nama cabang baru di sana klikCreate branch xxx
seperti yang ditunjukkan di bawah ini.Sekarang Anda dapat mengambil perubahan dari cabang itu secara lokal dan melanjutkan dari sana.
sumber
Mencoba
Komit seharusnya hanya ada satu kali di pohon Anda, bukan di dua cabang terpisah.
Ini memungkinkan Anda untuk memeriksa komit spesifik itu dan menamainya sesuka Anda.
sumber
gitk
untuk memvisualisasikan log AndaKamu harus melakukan:
(Anda menukar nama cabang dan melakukan)
Atau Anda bisa melakukan:
Jika di tempat Anda menggunakan nama cabang, Anda mendapatkan cabang dari ujung cabang.
sumber
HEAD
artinya. Anda bisa mengatakan "ujung cabang" atau "komit poin cabang ke" sebagai gantinya.