Bagaimana cara menutup Cabang Git?

112

jadi saya mulai menggunakan Git + GitHub.

Dalam tim kecil kami yang didistribusikan, setiap anggota membuat cabang mereka sendiri untuk setiap masalah / persyaratan yang dialokasikan kepada mereka.

  1. git branch Issue#1 <-- create this branch
  2. git checkout issue#1 <-- switch over to this branch

sekarang code code, commit, code, commit, dll ...

kemudian pull request, code-fixup, commit, code, commit.. dll

dan AKHIRNYA ... permintaan tarik diterima.

Woot.

tapi .. sekarang apa? (......canggung......)

Apakah orang yang membuat cabang di mesin dev lokalnya perlu .. menutup cabang? Saran bagi dev person untuk menghapus cabang `(... -D ...) dan kemudian melakukan pull / refresh pada master .. yang kemudian akan mendapatkan semua kode cabangnya.

Hmmmmm ... tidak yakin - tolong bantu :)

Pure.Krome
sumber
16
Sebuah cabang di Git hanyalah sebuah label pada komit tertentu - jadi pada dasarnya, jika Anda tidak membutuhkannya lagi - hapus saja "cabang" itu ("label" itu pada komit itu). Secara lokal, lakukan saja git branch Issue#1 -ddan hanya itu yang ada - tidak ada kode yang hilang, hanya label yang dihapus dari repositori Anda
marc_s
1
@marc_s Saya sarankan untuk membuat jawaban saja :)
KingCrunch
Jadi @marc_s - Anda mengatakan bahwa praktik standar setelah Anda menyelesaikan cabang Anda .. dan cabang telah didorong .. kami menghapusnya? Bagaimana dengan penggabungan?
Pure.Krome
@ Pure.Krome Setidaknya saya berasumsi, bahwa dengan "permintaan tarik diterima" yang Anda maksud, itu sudah digabungkan. Ya, tentu saja, integrasikan perubahan ke master,, developatau apa pun nama cabang pengembangan Anda (Gabung, Rebase (dengan / tanpa squash), ...)
KingCrunch
ketika saya mengatakan 'permintaan tarik diterima' .. itu terjadi di tempat lain. (mis. pengembang yang bertanggung jawab yang menyetujui semua kode yang di-PR ...). Saya bertanya-tanya apakah saya harus beralih ke master di mesin pengembang lokal saya dan melakukan penggabungan juga.
Pure.Krome

Jawaban:

181

Kami meminta pengembang meminta status permintaan penarikan bahwa mereka ingin cabang dihapus. Seringkali ini terjadi. Ada kalanya cabang diperlukan (misalnya menyalin perubahan ke cabang rilis lain).

Jari-jari saya telah mengingat proses kami:

git checkout <feature-branch>
git pull
git checkout <release-branch>
git pull
git merge --no-ff <feature-branch>
git push
git tag -a branch-<feature-branch> -m "Merge <feature-branch> into <release-branch>"
git push --tags
git branch -d <feature-branch>
git push origin :<feature-branch>

Cabang untuk bekerja. Sebuah tag menandai suatu tempat pada waktunya. Dengan menandai setiap gabungan cabang, kita dapat menghidupkan kembali cabang jika diperlukan. Tag cabang telah digunakan beberapa kali untuk meninjau perubahan.

Bill Door
sumber
8
Kami baru-baru ini membuat perubahan pada prosedur kami. Menggunakannya git push --tagsberat dan mengunduh semua tag. Ini menyulitkan Anda untuk memiliki tag lokal sendiri. Sebagai gantinya kami gunakan git push origin branch-<feature-branch>untuk mendorong hanya satu tag.
Bill Door
Jadi baris terakhir, Anda harus ingat untuk menggunakan nama tag untuk cabang fitur, yang sebelumnya kita setel ke "branch- <feature-branch>", bukan hanya <feature-branch>. Benar?
Premier Bromanov
@PremierBromanov baris terakhir adalah untuk menghapus cabang jarak jauh. Untuk mengingat tag @BillDoor telah digunakan git push --tags.
Membagi
Skrip yang bagus !!
Kike Gamboa
41

Ya, hapus saja cabangnya dengan menjalankan git push origin :branchname. Untuk memperbaiki masalah baru nanti, keluar dari master lagi.

Gaurav Gupta
sumber
3
Itu akan menghapus cabang jarak jauh, bukan yang lokal.
KingCrunch
5
Saya tidak tahu mengapa ini dimodifikasi di -2, ini adalah jawaban yang benar. Mereka pasti memiliki cabang jarak jauh, bagaimana lagi mereka bisa mengeluarkan PR terhadapnya?
Ana Betts
Jika Anda melakukan ini, lalu melakukan git pull, bukankah itu akan menghapus cabang lokal Anda juga? (Sunting: nm, saya melihat bahwa secara eksplisit tidak, kecuali Anda menjalankan git remote prune.)
Tim Keating
1
Apa yang terjadi dengan sejarah cabang?
geoidesic
40

setelah menyelesaikan kode pertama gabungkan cabang ke master lalu hapus cabang itu

git checkout master
git merge <branch-name>
git branch -d <branch-name>
Dau
sumber
dan ini ada di mesin dev SAYA sendiri, bukan? orang utama yang menerima kode baru .. mesinnya ada di tempat lain.
Pure.Krome
2
Jika ada orang lain yang melakukan penggabungan, dia biasanya memiliki penunjuk cabang Anda di remote terpisah, misalnya pengirim / nama-cabang. Dia perlu menggunakan git remote prune senderuntuk juga menyingkirkannya setelah Anda melakukannya - meskipun dalam banyak kasus, dia tidak perlu peduli.
jørgensen
1
Anda tidak boleh menggabungkan cabang Anda sendiri kecuali Anda yang bertanggung jawab untuk mengintegrasikannya di pohon utama. Jika Anda tidak dan Anda meminta orang lain untuk mengintegrasikannya, perbarui cabang master Anda dengan komit jarak jauh yang baru - mereka harus berisi apa pun yang Anda minta untuk ditarik - dan kemudian hapus cabang Anda. Ini memastikan Anda tidak akan mengalami masalah jika orang lain mengubah keadaan.
ThiefMaster