Пустой коммит слияния может позволить мне слиться - PullRequest
0 голосов
/ 04 июля 2018

У меня есть ветка staging, где по ошибке я получил пустой коммит слияния от feature/amazing.
Теперь я хочу объединить feature/amazing в staging, но не могу, так как git говорит мне, что все в курсе. Что мне делать?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Да, определенно вы не можете повторно слить его, потому что вы уже слили его и создали «коммит слияния». Но ваша проблема в том, что вы создали пустое сообщение о коммите.

Вы можете заменить это пустое сообщение о фиксации новым, выполнив следующую команду.

git commit --amend -m 'your new commit message'

Страница руководства Git объясняет эту функцию:

--amend
    Replace the tip of the current branch by creating a new commit. The
    recorded tree is prepared as usual (including the effect of the -i and
    -o options and explicit pathspec), and the message from the original
    commit is used as the starting point, instead of an empty message, when
    no other message is specified from the command line via options such as
    -m, -F, -c, etc. The new commit has the same parents and author as the
    current one (the --reset-author option can countermand this).


    It is a rough equivalent for:

        $ git reset --soft HEAD^
        $ ... do something else to come up with the right tree ...
        $ git commit -c ORIG_HEAD

    but can be used to amend a merge commit.

Эта команда эквивалентна сбросу и повторной фиксации вашей работы, но только в одной команде. На самом деле он объединяет ваше новое сообщение о коммите и последнее сообщение о создании нового коммита (значит, вы получите новый хеш). Кроме того, если вы поставили изменения, они также будут добавлены в новый коммит.

Вы действительно должны быть обеспокоены переписыванием истории, если вы уже отправили пустой коммит на удаленный компьютер.

Надеюсь, это поможет :) Не стесняйтесь спрашивать, хотите ли вы узнать больше.

0 голосов
/ 04 июля 2018

Если вы хотите избавиться от нежелательного коммита слияния, которое вы можете сделать,

git reset --hard <sha of the commit you want to point the HEAD to> 

в промежуточной ветке. Обычно это коммит ниже коммита слияния. Вы можете получить его по git log.

--hard потеряет все изменения в упомянутом коммите, поэтому используйте его с умом или используйте --soft. Затем вы можете внести изменения в ветку feature/amazing и объединить ее снова.

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