Объединить неподписанные коммиты с мастером
У меня есть несколько неподписанных коммитов в ветке "dev" моего проекта.
Но в проекте произошли изменения, и теперь я должен подписать каждый коммит перед слиянием с мастером.
Как я могу слиться с мастером, если у меня есть коммиты без знака в ветке "dev"?
1 ответ
У меня есть несколько неподписанных коммитов в ветке "dev" моего проекта.
Вы ответили на свой вопрос:
... Я должен подписать каждый коммит...
Вы должны подписать каждый коммит в ветке dev
, Пожалуйста, имейте в виду, что подписание коммита изменяет всю ветку после этого коммита, поэтому в конце вы должны принудительно нажать на ветку dev
, И сделайте резервную копию перед запуском.
Начните с dev
ветка:
git checkout dev
Если в нем только несколько коммитов (начиная с коммита, где он был разветвлен master
) тогда можно сделать git rebase -i $COMMIT_ID
и беги git commit -S --amend
за каждый коммит, который вы хотите подписать.
Если их больше, чем несколько, лучше использовать filter-branch
:
git filter-branch -f --commit-filter 'git commit-tree -S "$@"' $COMMIT_ID..dev
$COMMIT_ID
это идентификатор коммита где dev
был отделен от master
, Вы можете найти это с git log --all --decorate
или же git merge-base --fork-point master
,
После подписания объединить в master
и толкать новый dev
:
git checkout master
git merge dev
git push origin master +dev