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
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.
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).
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
Jawaban:
Ini hanya memperingatkan Anda bahwa Anda memiliki perubahan yang didorong ke cabang
origin
, tetapi perubahan itu tidak digabungkanmaster
, 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
sumber
master
tidak terlibat dalam hal ini. Yang Anda maksud adalah cabang saat ini.;)
git branch -d branch_name
yang seharusnya hanya menghapus cabang secara lokal. Mengapa peringatan diperlukan dalam kasus ini?Dengan asumsi Anda saat ini telah
master
check out, itu berarti perubahan yang dilakukanold_branch
tidak ada dimaster
. Namun, mereka yang hadir diold_branch
atasorigin
.sumber
HEAD
", diHEAD
sini merujuk pada HEAD cabang master lokal.master
memeriksa secara lokal, ini masih dapat terjadi jika SHA dari salah satu komit telah berubah; yaitu Anda mendasarkan kembaliorigin/old_branch
keorigin/master
. Bahkan jika itu adalah percepatan-maju, ini akan menghasilkan SHA baru untuk setiap komit baru dariorigin/old_branch
, menyebabkan git melihat SHA asli di lokal Andaold_branch
sebagai dipisahkan setelah menarik perubahan kemaster
cabang lokal Anda . Anda dapat melihat jawaban ini dan jawaban ini mengapa ini terjadi.Ini berarti cabang lokal Anda
old_branch
mutakhir dengan cabang jarak jauhold_branch
di jarak jauhorigin
tetapi tidak digabungkan ke cabangmaster
yang 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_branch
git pada master maka tidak mengizinkan Anda untuk menghapus cabang yang dipisahkan ke master (baik itu memungkinkan, tetapi dengan kunci-D
yang merupakanforce-delete
opsi).sumber
master
, tapi arusnyaHEAD
.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
sumber