Почему git soft удаляет ветки, которые не были объединены? - PullRequest
0 голосов
/ 26 октября 2018

Вот мои теоретические ветки git:

master
feature/something
feature/something-else

Если ветвь, в которой я сейчас нахожусь, равна master и feature/something не была объединена с master, тогда git br -d feature/something не следует успешно удалятьfeature/something.feature/something не был объединен с master, а флаг -d должен защищать от удаления feature/something.Однако в последнее время я заметил, что это мягкое удаление не защищает меня от удаления этой неутвержденной ветви - feature/something.На самом деле git br -d feature/something действительно удалит feature/something, и я получу следующее предупреждение от git:

warning: deleting branch 'feature/something' that has been merged to
         'refs/remotes/origin/feature/something', but not yet merged to HEAD.

Почему git удалил ветку из моей локальной ветки feature/something, когда feature/somethingне был объединен с master - какой была моя текущая ветка?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Я вижу следующее сообщение об ошибке:

предупреждение: удаление ветки 'Feature / что-то', которое было объединено с 'refs / remotes / origin / Feature / что-то', но еще не объединенов HEAD.

, потому что ветвь, которую я «мягко» удаляю git br -d feature/something, имела удаленную ветвь origin/feature/something.В приведенном выше вопрос / вариант использования feature/something был объединен с удаленным мастером - origin/master - но я не обновил свою локальную копию master.Поэтому, когда я попытался мягко удалить git br -d feature/something с моей текущей веткой как master, действительно, мне это удалось, потому что удаленная копия origin/master включает в себя историю origin/feature/something.

Другими словами, поведение все еще является, пожалуй, безопасной операцией - мягкое удаление.Локальная ветка удаляется без потенциальной потери работы, но позволяет мне знать, что локально master не включает ветку feature/something, следовательно, сообщение просто является предупреждением.

0 голосов
/ 26 октября 2018

Полная документация для git branch -d гласит:

-d::
--delete::
    Delete a branch. The branch must be fully merged in its
    upstream branch, or in `HEAD` if no upstream was set with
    `--track` or `--set-upstream-to`.

А в ваших предупреждающих сообщениях говорится, что feature/something настроил настроенную ветвь (*)1010 *) и, следовательно, часть HEAD (master в вашем случае) не применяется.

Это поведение было задокументировано с 2010-04-15 (в коммите fff0d0abdd) - так что оно не совсем новое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...