【问题标题】:Git push to main project repo throws an error after git subtree addgit subtree add 后 Git push to main project repo 抛出错误
【发布时间】:2020-08-21 06:56:23
【问题描述】:

尝试使用 git subtree 跨多个项目共享公共库文件。这是我一直遇到的问题。

1) 添加子树所以我的项目的“jquery_treetable”子目录。

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

添加子树后gitk如下所示

2) 将更新推送到主项目 repo(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 log 如下所示

4) 我认为,我之所以被拒绝,是因为 git log 的第二次提交中缺少 change-id (Squashed one)。但是如何为这个 Squashed 子树添加 Change-id。

【问题讨论】:

  • 一个棘手的情况可能是更改 ID 始终位于提交消息的最后一行
  • @prudviraj 更新了问题。再次检查

标签: git gerrit git-push git-subtree


【解决方案1】:

您有两个未合并的提交(两个提交的提交日期相同,所以我猜两者是同时创建的并且没有合并)并且问题不在于第一次提交,而是第二次提交(错误消息显示36fb8f5) 在提交消息中有 git-subtree 并且 change-Id 丢失,gerrit 将检查所有要合并的更改的更改 id,您可能需要一个

git reset --soft HEAD^1(如果你想要以前的合并提交更改)

但是,如果您想解决手头的问题并有一个干净的状态

git reset --hard HEAD^1

以上命令现在应该将您的分支 HEAD 位置带到 36fb8f5

您可以使用

进行检查
git log -2

现在执行

git commit --amend

现在检查更改 ID 是否附加到提交消息中,如果是,您可以推送更改并且问题应该得到解决

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 2014-09-26
    • 2013-12-04
    • 1970-01-01
    • 2013-08-10
    • 2015-11-06
    • 1970-01-01
    相关资源
    最近更新 更多