Могу ли я сделать git умнее при выяснении, можно ли удалить ветку? - PullRequest
4 голосов
/ 14 февраля 2011

git branch -d почти всегда ошибается, если в ветви есть код, который я не слил. Очень часто я разветвляюсь foo от master , выполняю работу, а затем объединяю ее обратно в master , но затем git branch -d говорит: "Ветвь 'foo' не полностью объединен ", пока я не объединю мастер обратно в foo (что иногда является болью).

Ответы [ 4 ]

4 голосов
/ 15 февраля 2011

Вам не нужно сливать что-то в foo , чтобы иметь возможность удалить foo .

Насколько я знаю, критерий таков: foo объединен в HEAD , поэтому, возможно, вам следует убедиться, что master является вашей текущей веткой при попытке удалить foo .

1 голос
/ 12 ноября 2012

в этом случае похоже, что я раздавил коммиты foo

Это согласуется с предупреждением "не полностью объединено" (ветвь с коммитами, которые недоступны из других ссылок)

Можно сделать две проверки:

1 / Интересен вопрос « Git и« 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

Должно быть возвращено более одной ветви

0 голосов
/ 21 апреля 2011

Do

git rebase master foo

после того, как вы все слили. Тогда git branch -d foo должно получиться

0 голосов
/ 15 февраля 2011
#!/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
...