【问题标题】:Issues in commit in gerritgerrit 中的提交问题
【发布时间】:2025-12-08 02:30:01
【问题描述】:

我正在尝试使用 gerrit,但在提交时遇到了一些问题。当我提交我的更改并将其推送到分支时,有时会提出两个代码审查,一个是我的,另一个是在同一分支上工作的人,而且很多时候我收到消息,即使我做了 5 次提交也是如此只有一次提交。我正在使用以下命令:

git add <file_name>
git commit -m "commit msg"
git push <branch name>

在进一步的研究中,我发现由于 git hook 可能存在问题,因为我没有在任何地方使用 git hook。由于 git hook gerrit 无法区分不同人所做的提交,因此一推就提出了许多评论。我的理解正确吗?如果不是,请帮助我为什么会这样。

另外我想在 git hook 命令中问:

scp -p -P 29418 username@your_gerrit_address:hooks/commit-msg.git/hooks/

这个命令是做什么的,这个数字29418是什么。这个数字是gerrit给出的吗?

【问题讨论】:

  • 你必须有一个钩子,当你创建一个新的提交时,它会自动生成 Change-Id。此 Change-Id 是在创建提交时在日志消息中生成的内容,并且在您修改提交时不会更新。

标签: git github gerrit githooks git-commit


【解决方案1】:

当我提交更改并将其推送到 brnach 时,有时会提出两个代码审查,一个是我的,另一个是在同一分支上工作的人

这听起来像是预期的行为;上传以供审核的提交尚未合并到您的分支。这个想法是提交由另一个团队成员(或您的组织想要的任何设置)审查、批准,然后提交/合并。

直到您按下提交按钮,提交才真正出现在您的“真实”分支上。这意味着,任何下载存储库的人都可以看到它。

很多时候我收到消息,即使我只提交了 5 次,你也提前了 5 次提交

这是因为您的本地 repo 有 5 个它不知道上游存在的提交(在“官方”分支中)。

首先,尝试“git fetch”;它将更新您本地副本的远程(服务器存储库)视图,以便您可以看到最近提交的任何内容。本质上,这让您的本地仓库知道“好的,这些提交现在已提交”。

如果这还不够,您可能有 5 个未提交的提交在 gerrit 中待处理。

由于 git hook gerrit 无法区分不同人所做的提交,因此一推就提出了许多评论。我的理解正确吗?

这似乎很有可能。 Gerrit 通过“Change-Id:”标签匹配对现有更改的提交。如果您没有 git commit 挂钩来添加该行,则 gerrit 可能会在您每次推送时为每个提交创建一个新更改。

这也和前面的讨论有关;您的本地仓库不知道其中一些提交已提交。因此,它每次都会上传所有 5 个。

【讨论】: