在使用git推送到远程服务器的时候出现了如下错误:
remote: Change-Id: I6be0d3bc768b24b837223a55221403f4c65aff59
remote: ERROR: missing Change-Id in commit message footer
To ssh://lining@114.215.120.180:8849/activity
! [remote rejected] HEAD -> refs/for/develop (missing Change-Id in commit message footer)
error: failed to push some refs to 'ssh://lining@114.215.120.180:8849/activity'
根据提示可以判断是提交的编号错误(Change-Id),但是究竟是怎么回事呢?
项目中使用的是git控制版本,每个人做过修改之后都要提交到远程的git服务器上,但是为了便于统一管理或者少出错吧,中间添加了一道审核程序(在本地和远程服务器之间还有一道“防火墙”,使用的gitlab,每次都要现推送到gitlab经过审查通过之后才能推送到远程服务器上),每次提交(commit)都需要产生一个id以便区分不同的提交,这个id的产生是使用一段脚本控制的:scp -p -P 8849 lining@114.215.120.180:hooks/commit-msg .git/hooks/。(注:每个分支都使用该段脚本,只不过是为了生成id罢了,这是我用到的脚本)
一定要在提交(commit)之间使用(运行)该脚本生成一个id,然后再次进行推送。
推送成功,如:
如果已经提交(commit)了,就使用
git reset --soft HEAD~1
回退到上次提交之前,然后引入控制脚本(钩子):
scp -p -P 8849 lining@114.215.120.180:hooks/commit-msg .git/hooks/