git branch -d почти всегда ошибается, если в ветви есть код, который я не слил. Очень часто я разветвляюсь foo от master , выполняю работу, а затем объединяю ее обратно в master , но затем git branch -d говорит: "Ветвь 'foo' не полностью объединен ", пока я не объединю мастер обратно в foo (что иногда является болью).
git branch -d
Вам не нужно сливать что-то в foo , чтобы иметь возможность удалить foo .
Насколько я знаю, критерий таков: foo объединен в HEAD , поэтому, возможно, вам следует убедиться, что master является вашей текущей веткой при попытке удалить foo .
в этом случае похоже, что я раздавил коммиты foo
foo
Это согласуется с предупреждением "не полностью объединено" (ветвь с коммитами, которые недоступны из других ссылок)
Можно сделать две проверки:
1 / Интересен вопрос « Git и« The branch 'x' is not fully merged »»:
The branch 'x' is not fully merged
git log --graph --left-right --cherry-pick --oneline master...foo
2 / Смотрите " Используя Git, покажите все коммиты, которые находятся в одной ветке, но не в других "
git branch --contains branch-to-delete
Должно быть возвращено более одной ветви
Do
git rebase master foo
после того, как вы все слили. Тогда git branch -d foo должно получиться
git branch -d foo
#!/bin/sh # Get rid of all the branches I don't care about. for b in $(git branch) ; do git rebase master ${b} if test $? -ne 0; then git rebase --abort ; fi git checkout -f master done for b in $(git branch) ; do git branch -d ${b} ; done