git branch -d дає попередження


92

Просто хочу краще зрозуміти попереджувальне повідомлення після того, як я видалив локальну гілку

попередження: видалення гілки 'old_branch', до якої об’єднано 'refs/remotes/origin/old_branch', але ще не об’єднано HEAD.


29
якщо ви об'єднаєте --squash your old_branch, ви отримаєте це попередження завжди, коли видаляєте його локально. Під час стиснення вашого індексу скидається, отже, він не відповідає old_branch HEAd
Antoine Wils

Хоча інші відповіді вірні, коментар Антуана став причиною принаймні в моєму випадку.
Скурпі

Відповіді:


66

Це лише попереджає вас, що у вас є зміни, надіслані до гілки origin, але вони не об’єднані master, тому ви видаляєте їх лише локально.

Попереджує вас, що у вас більше немає локальної копії цієї гілки, але вона існує в origin

Якщо ви хочете також видалити віддалену гілку, використовуйте git push --delete origin old_branch


9
Так, masterне бере участі в цьому. Ви маєте на увазі поточну гілку. ;)
Фернандо Еспіноса

1
Я отримую це попередження, навіть якщо я роблю такий, git branch -d branch_nameякий повинен видаляти гілку лише локально. Навіщо в цьому випадку потрібне попередження?
Акшай Дамле

2
Але origin / old_branch об'єднано з origin / master. Пізніше я зробив git pull origin на майстер-гілці. Все така ж помилка. Хіба це не помилка в GH?
vikramvi

36

Якщо припустити, що ви зараз masterзареєструвались, це означає, що внесені зміни old_branchвідсутні master. Тим НЕ менше, вони можуть бути присутніми в old_branchна origin.


4
Так. Це правильна відповідь! "але ще не об'єднаний з HEAD", HEADтут посилання на HEAD місцевого головного відділення.
Деві

3
Але origin / old_branch об'єднано з origin / master. Пізніше я зробив git pull origin на майстер-гілці. Все така ж помилка. Хіба це не помилка в GH?
vikramvi

1
@vikramvi Якщо припустити, що ви masterзареєструвались локально, це все одно може статися, якщо SHA будь-якого з комітів змінився; тобто ви перебазували origin/old_branchна origin/master. Навіть якщо це було швидким перемотуванням вперед, це буде генерувати новий SHA для кожного нового коміту, з-за origin/old_branchчого git бачитиме оригінальні SHA у вашому old_branchлокалі як незлиті після внесення змін до вашої локальної masterгілки. Ви можете побачити цю відповідь і цю відповідь, чому це відбувається.

8

Це означає, що ваша локальна гілка old_branchоновлена ​​з віддаленою гілкою old_branchна віддаленому, originале вона не об’єднана з гілкою, masterяка вважається основною гілкою в репо.

Це лише запобіжний засіб від Git. Це дає вам підказку: можливо, ви виконали свою роботу в гілці теми і забули об’єднати її з основною гілкою?


оновлення

Git попереджає вас про втрату змін. Наприклад, якщо у вас немає вашого old_branchна master git, тоді не дозволяйте навіть видаляти гілку, яка не з’єднана з master (ну це дозволяє, але з ключем, -Dякий є force-deleteопцією).


7
Не обов’язково master, але поточний HEAD.
Заморожене полум'я

Отже, -D - це коли ви не поділилися видаленою гілкою (насправді це коміти) з жодною віддаленою гілкою. Хоча попередження полягає в тому, щоб повідомити вам, що ви надали спільний доступ до гілки (комітів) з пультом дистанційного керування, але вона просто не об’єднана в HEAD. HEAD - це HEAD, віддалений / refs / HEAD - не те саме. Але, будь ласка, виправте мене, якщо я помиляюся стосовно відмінностей між віддаленою HEAD та локальною HEAD.
Ерік

7

Щоб додати до інших відповідей, це також може означати, що зміна може бути об’єднана в master, просто локальна копія master ще не відображає її. У будь-якому випадку це просто інформує вас, що локальна копія вашого майстра не має змін, які ви натиснули на походження. Об’єднано / Не об’єднано ... можливо, може, ні

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.