15

我正在努力使用 TortoiseGit 将我的一些数据推送到 gerrit。我创建了一个新的 repo 并将其提交给 master。我用我的私钥添加了一个遥控器,我还上传了公钥。

从gerrit中拉出没问题,但是当我尝试推送时出现以下错误:

remote: Resolving deltas: 100% (96/96)
remote: Processing changes: refs: 1, done    
remote: ERROR: missing Change-Id in commit message
remote: Suggestion for commit message:
remote: Initial Commit
remote:
remote: Change-Id: Icb5f79b9a32abc77a99f0034ecc6a5a9ae9ef1c6
remote: Hint: To automatically add a Change-Id to commit messages, install the commit-msg hook:
remote: $ scp -p -P 29418 <server stuff>:hooks/commit-msg .git/hooks/

最大的问题是,我生活在一个 Windows 世界中,没有 $ scp .... 任何建议,我如何安装 git hook 或提供提交 ID?

顺便说一句git hooks --install返回'hooks' is not a git command

4

2 回答 2

20

只需从 : 下载它http://www.example.com/r/tools/hooks/commit-msg,然后将其复制到您的 .git/hooks 文件夹。

或者您可以从gerrit 评论下载它

- 更新 -

如果你在本地提交后添加提交钩子,很可能是这种情况,你需要修改你的最后一次提交。只需修改最后一次提交而不进行任何真正的更改,就会将 Change-ID 添加到您的日志消息中。

  1. git commit -a --amend
  2. git log -1// 这是为了检查 Change-ID 是否存在于您的日志消息中
  3. git push origin HEAD:refs/for/master

-- 更新 2 --

如果你和我一样,并且有很多项目时不时地创建克隆,那么你可能想要设置你的 git 安装,以便默认安装 commit-msg 钩子。您可以通过将 commit-msg 复制到您的 git 模板文件夹来完成此操作。在我的 Win7 系统上可以在这里找到:

C:\Program Files (x86)\Git\share\git-core\templates\hooks

下次创建新克隆时,无需再次下载 commit-msg。

于 2013-07-18T03:56:53.200 回答
1

这看起来像是未下载到您的克隆中的适当挂钩的情况。

您可以尝试这样做:

# cd into your clone such that you should be able to see .git folder on ls -a
# for example if you had following structure myclone/myproject/.git
# you have to cd to myclone/myproject directory


$ scp -p -P 29418 <server stuff>:hooks/commit-msg .git/hooks/

现在转到您的钩子文件夹并ls查看您是否已下载所需的钩子。

您无需安装任何挂钩,只需从 gerrit 存储库中复制即可

更新 https://www.mediawiki.org/wiki/Talk:Gerrit/git-review 是您可能正在寻找的

于 2013-07-18T19:01:15.717 回答