Apa yang harus dilakukan dengan cabang setelah bergabung

342

Saya memiliki dua cabang: masterdan branch1. Saya baru saja bergabung branch1kembali masterdan saya sudah selesai dengan cabang itu. Haruskah saya menghapusnya atau membiarkannya? Akankah menghapusnya menyebabkan hilangnya data?

Alison
sumber

Jawaban:

410

Setelah penggabungan, aman untuk menghapus cabang:

git branch -d branch1

Selain itu, git akan memperingatkan Anda (dan menolak untuk menghapus cabang) jika ia berpikir Anda belum sepenuhnya menggabungkannya. Jika Anda secara paksa menghapus cabang (dengan git branch -D) yang belum sepenuhnya digabungkan, Anda harus melakukan beberapa trik untuk mendapatkan kembali komitmen yang tidak terputus (lihat di bawah).

Ada beberapa alasan untuk mempertahankan cabang. Misalnya, jika itu adalah cabang fitur, Anda mungkin ingin dapat melakukan perbaikan bug pada fitur yang masih di dalam cabang itu.

Jika Anda juga ingin menghapus cabang pada host jarak jauh, Anda dapat melakukan:

git push origin :branch1

Ini akan secara paksa menghapus cabang pada remote (ini tidak akan memengaruhi repositori yang sudah check-out dan tidak akan mencegah siapa pun dengan akses push untuk mendorong kembali / membuatnya).


git reflogmemperlihatkan revisi yang baru saja diperiksa. Cabang apa pun yang telah Anda periksa dalam riwayat repositori terbaru juga akan muncul di sana. Selain itu, git fsckakan menjadi alat pilihan di setiap kasus kehilangan komit di git.

Jonas Schäfer
sumber
Jika Anda ingin menyimpan cabang, Anda dapat membuat tag sebelum menghapusnya. Jika Anda ingin kembali ke titik itu, Anda dapat memeriksa tag itu.
Joqus
3
@ Joqus saya lebih suka menyarankan untuk menyimpannya sebagai cabang dalam kasus itu. Hanya saja, jangan mempublikasikannya.
Jonas Schäfer
Untuk berjaga-jaga - jika Anda ingin "sepenuhnya menggabungkan" cabang sebelum menghapusnya, cukup dorong cabang itu setelah bergabung, tetapi sebelum menghapus. Sesuatu sepertigit checkout master && git merge branch1 && git push origin branch1 && git branch -d branch1
avtomaton
25

Saya lebih suka RENAME daripada DELETE

Semua cabang saya diberi nama dalam bentuk

  • Fix/fix-<somedescription> atau
  • Ftr/ftr-<somedescription> atau
  • dll.

Menggunakan Menara sebagai front end git saya, dengan rapi mengatur semua Ftr/, Fix/, Test/dll ke dalam folder.
Setelah saya selesai dengan cabang, saya ganti namanya menjadi Done/...-<description>.

Dengan begitu mereka masih ada di sana (yang bisa berguna untuk memberikan sejarah) dan saya selalu bisa kembali mengetahui apa itu (fitur, perbaikan, pengujian, dll.)

Yohst
sumber
4
Apakah Anda juga mengganti nama cabang jarak jauh?
VitalyB
22
Tampaknya berlebihan untuk mempertahankan cabang-cabang ini, dan gila untuk menamainya kembali. Apakah saya melewatkan sesuatu di sini? Anda selalu dapat membuat ulang cabang. stackoverflow.com/questions/3640764/…
ksav
tidak masuk akal untuk mempertahankan cabang setelah mereka bergabung
rastaman
2
+1 untuk Gagasan tentang penggantian nama menjadi Fix, Test, dan Done ... Menjaga cabang adalah cara kontraktor dibayar di perusahaan saya.
jpfreire
1

Jika Anda akan melanjutkan dan HAPUS cabang setelah menggabungkannya.
Rawat
semua referensi URL hyperlink dari cabang-cabang Anda DIHAPUS, akan RUSAK .

ahmednabil88
sumber