Git pu sh в репозиторий основного проекта выдает ошибку после добавления git поддерева - PullRequest
0 голосов
/ 06 мая 2020

Попытка использовать поддерево git для совместного использования файлов библиотеки в нескольких проектах. Вот проблема, с которой я все время сталкиваюсь.

1) Добавьте поддерево, чтобы подкаталог "jquery_treetable" моего проекта.

$ git subtree add -P jquery_treetable ssh://epedgov@gerrit.ericsson.se:29418/global_share/3pp/foss/jquery_treetable master --squash

gitk после добавления поддерева выглядит так, как показано ниже

gitk

2) pu sh обновления основного репозитория проекта (Gerrit)

$ git push origin HEAD:refs/for/master
remote: Resolving deltas: 100% (1/1)
remote: Processing changes: refs: 1, done    
remote: ERROR: [36fb8f5] missing Change-Id in commit message footer
remote: 
remote: Hint: To automatically insert Change-Id, install the hook:
remote:   gitdir=$(git rev-parse --git-dir); scp -p -P 29418 epedgov@gerrit.ericsson.se:hooks/commit-msg ${gitdir}/hooks/
remote: And then amend the commit:
remote:   git commit --amend
remote: 
To https://gerrit.ericsson.se/a/lte/tools/mkdoc
 ! [remote rejected] HEAD -> refs/for/master ([36fb8f5] missing Change-Id in commit message footer)

3) git журнал выглядит следующим образом

enter image description here

4) Я думаю, я получаю это отклонение из-за отсутствия идентификатора изменения во второй фиксации в журнале git (сжатый). Но как добавить Change-id для этого Squashed поддерева.

1 Ответ

0 голосов
/ 07 мая 2020

У вас есть два не объединенных коммита (Дата фиксации одинакова для обоих коммитов, поэтому я предполагаю, что оба создаются одновременно и не объединяются), и проблема не в первом коммите, а во втором коммите (Ошибка сообщение показывает, что 36fb8f5), у которого было git -subtree в сообщении фиксации, а идентификатор изменения отсутствует, gerrit проверит идентификатор изменения всех изменений, которые должны быть объединены, вам может потребоваться

git reset --soft HEAD^1 (Если вы хотите предыдущие изменения фиксации слияния)

Однако, если вы хотите решить проблему под рукой и получить чистый лист

git reset --hard HEAD^1

Команда выше теперь должно привести ваше положение HEAD ветки к 36fb8f5

, вы можете проверить то же самое, используя

git log -2

Теперь выполните

git commit --amend

Теперь проверьте, добавлен ли идентификатор изменения к сообщению о фиксации, если это так, вы можете сделать sh изменение, и проблема должна быть решена

...