Обновите сообщение коммита слияния, которое не отображается в git merge - PullRequest
0 голосов
/ 26 марта 2019

У меня есть следующие коммиты, и мне нужно обновить средний коммит именем ветки.

...
...
9a3de7d [#US810469]Add configuration
807fed0 Merge branch 'master' of github.xx.com:org/repo
6153e1e [#US810469] fix typo

Я понял, что когда git rebase -i не показывает коммиты слияния, я узнал, почему здесь[ Коммиты слияния не отображаются в git rebase --interactive

В интерактивной оболочке я видел, что при удалении строки вы теряете коммит.Я думал, может быть, я могу добавить коммит в место, которое я хочу :), но это не сработало.Он показывает мне список дел для редактирования.Я пытаюсь отредактировать их и зафиксировать снова, но каждый раз происходит сбой.

Как мне изменить сообщение среднего коммита на "[# US810469] Слить ветку 'master' из github.xx.com:org/repo"?

Ответы [ 3 ]

2 голосов
/ 26 марта 2019

когда вы git rebase -i, вы переписываете историю линейным образом, тем самым удаляя свой коммит слияния.Вы можете сделать это (предположим, что вы находитесь на development branch)

git branch temp # create temporary branch where you are now (at 6153e1e I suppose)
git reset --hard 807fed0 # move develop branch to the merge commit
git commit --amend # now edit your message to look the way you want it
git cherry-pick temp # since there is only commit in temp branch, cherry-pick will do

, если у вас было несколько коммитов после коммита слияния, тогда вместо последнего вишневого пика вы могли бы:

git checkout temp
git rebase develop
git checkout develop
git rebase temp
git branch -d temp

Для этого могут быть некоторые ярлыки, но так я легко понимаю шаги;и, надеюсь, вы тоже ...

0 голосов
/ 26 марта 2019

Если то, что у вас есть после ревизия слияния, которую вы хотите изменить, это только простые старые коммиты (без слияний), вы можете рассмотреть возможность сделать это вручную :

git checkout 807fed0
git commit --amend -m "Here's the fixed comment"
git cherry-pick 807fed0..master # master or whatever branch
# if everything is ok, then move the local pointer of master (or whatever branch) and push as required
git branch -f master
git push whatever-remote -f master

Готов!

0 голосов
/ 26 марта 2019

Вместо того, чтобы вставлять строку в интерактивное диалоговое окно, измените выбор на изменение в коммите, прежде чем вы захотите вставить коммит. Пример:

pick 123abccc one
pick 1234abcc two
pick 12345abc three

Чтобы вставить новый коммит до 123abccc (one)

pick 123abccc one
edit 1234abcc two
pick 12345abc three

Перед выполнением git rebase --continue добавьте новые коммиты.

EDIT: Если вы хотите изменить только сообщение фиксации, измените выбор на новое слово.

...