Gerrit: missing Change-Id in commit message footer
git出现:
remote: Resolving deltas: 100% (27/27)
remote: Processing changes: refs: 1, done
remote: ERROR: [ddcd70c] 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 [yourName]@smartgit:hooks/commit-msg ${gitdir}/hooks/
remote: And then amend the commit:
remote: git commit --amend
按照提示,执行:
gitdir=$(git rev-parse --git-dir);
继续执行:
scp -p -P 29418 [yourName]@smartgit:hooks/commit-msg ${gitdir}/hooks/
出现问题:
subsystem request failed on channel 0
scp: Connection closed
将提示方法中的scp -p改为scp -O:
scp -O -P 29418 [yourName]@smartgit:hooks/commit-msg ${gitdir}/hooks/
解释:尝试对 scp 使用 -O 选项。 这在我使用 9.0p1 的情况下解决了同样的问题。 它强制使用旧版 SCP 协议进行文件传输,而不是 SFTP 协议。 对于未实现 SFTP 的服务器,可能需要使用 SCP 协议,以实现特定文件名通配符模式的向后兼容性,以及为较旧的 SFTP 服务器扩展带有“~”前缀的路径。
按照提示执行:
git commit --amend
输入【:wq】,退出编辑。最后重新推送:
git push origin HEAD:refs/for/...
【git提交格式】:
git push <remote 名字> <本地分支的名字> : <远程库的名字>
git push :表示推送代码到远程服务器。
origin : 表示远程的库的名字。
master:表示远程分支的名字。
HEAD: 表示一个特别的指针,指向你正在工作的本地分支的指针,可以当做是本地分支的别名。git通过它可以知道当前工作区间在哪个分支。
refs/for:提交代码到服务器后,需要经过code review之后才能Merge.
refs/heads:不需要经过code review,直接Merge.