git branch -d memberikan peringatan

91

Hanya ingin mendapatkan pemahaman yang lebih baik tentang pesan peringatan setelah saya menghapus cabang lokal

peringatan: menghapus cabang 'old_branch'yang telah digabung 'refs/remotes/origin/old_branch', tapi belum digabung ke HEAD.

pengguna1322228
sumber
29
jika Anda menggabungkan --squash old_branch Anda, Anda akan selalu mendapatkan peringatan ini saat menghapusnya secara lokal. Ketika squashing indeks Anda diatur ulang maka tidak cocok dengan old_branch HEAd
Antoine Wils
Sementara jawaban lain benar, komentar Antoine adalah alasannya setidaknya dalam kasus saya.
Squrppi

Jawaban:

66

Ini hanya memperingatkan Anda bahwa Anda memiliki perubahan yang didorong ke cabang origin, tetapi perubahan itu tidak digabungkan master, jadi Anda hanya menghapusnya secara lokal.

Ini memperingatkan Anda bahwa Anda tidak lagi memiliki salinan lokal dari cabang itu, tetapi ada di origin

Jika Anda ingin menghapus cabang jarak jauh juga, gunakan git push --delete origin old_branch

cjhveal.dll
sumber
9
Ya, mastertidak terlibat dalam hal ini. Yang Anda maksud adalah cabang saat ini. ;)
Fernando Espinosa
1
Saya mendapatkan peringatan ini bahkan jika saya melakukan git branch -d branch_nameyang seharusnya hanya menghapus cabang secara lokal. Mengapa peringatan diperlukan dalam kasus ini?
Akshay Damle
2
Tapi origin / old_branch digabung menjadi origin / master. Kemudian saya melakukan git pull origin di cabang master. Masih error yang sama. Bukankah bug ini di GH?
vikramvi
36

Dengan asumsi Anda saat ini telah mastercheck out, itu berarti perubahan yang dilakukan old_branchtidak ada di master. Namun, mereka yang hadir di old_branchatas origin.

Karl Bielefeldt
sumber
4
Ya. Ini jawaban yang benar! "tetapi belum digabung ke HEAD", di HEADsini merujuk pada HEAD cabang master lokal.
Devy
3
Tapi origin / old_branch digabung menjadi origin / master. Kemudian saya melakukan git pull origin di cabang master. Masih error yang sama. Bukankah bug ini di GH?
vikramvi
1
@vikramvi Dengan asumsi Anda telah mastermemeriksa secara lokal, ini masih dapat terjadi jika SHA dari salah satu komit telah berubah; yaitu Anda mendasarkan kembali origin/old_branchke origin/master. Bahkan jika itu adalah percepatan-maju, ini akan menghasilkan SHA baru untuk setiap komit baru dari origin/old_branch, menyebabkan git melihat SHA asli di lokal Anda old_branchsebagai dipisahkan setelah menarik perubahan ke mastercabang lokal Anda . Anda dapat melihat jawaban ini dan jawaban ini mengapa ini terjadi.
8

Ini berarti cabang lokal Anda old_branchmutakhir dengan cabang jarak jauh old_branchdi jarak jauh origintetapi tidak digabungkan ke cabang masteryang dianggap sebagai cabang utama dalam repo.

Ini hanya pencegahan dari git. Ini memberi Anda petunjuk: mungkin Anda melakukan pekerjaan Anda di topic-branch dan lupa untuk menggabungkannya ke cabang utama?


memperbarui

Git memperingatkan Anda agar tidak kehilangan perubahan Anda. Sebagai contoh jika Anda tidak memiliki old_branchgit pada master maka tidak mengizinkan Anda untuk menghapus cabang yang dipisahkan ke master (baik itu memungkinkan, tetapi dengan kunci -Dyang merupakan force-deleteopsi).

Max Komarychev
sumber
7
Belum tentu master, tapi arusnya HEAD.
Frozen Flame
Jadi -D adalah ketika Anda belum membagikan cabang yang sedang dihapus (sebenarnya itu melakukan) dengan cabang jarak jauh apa pun. Sementara peringatannya adalah untuk memberi tahu Anda bahwa Anda telah berbagi cabang (komit) dengan remote tetapi tidak digabungkan menjadi HEAD. HEAD adalah HEAD, remote / refs / HEAD tidak sama. Tapi tolong perbaiki saya jika saya salah mengenai perbedaan antara HEAD jarak jauh dan HEAD lokal.
Eric
7

Untuk menambah jawaban lain, ini juga bisa berarti bahwa perubahan mungkin digabungkan menjadi master, hanya saja salinan master lokal Anda belum mencerminkannya. Apa pun cara ini, ini hanya memberi tahu Anda bahwa salinan lokal master Anda tidak memiliki perubahan yang Anda dorong pada asal. Digabung / Tidak digabung ... mungkin, mungkin tidak

Mithun Nair
sumber