首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Gerrit进行分支复习

如何用Gerrit进行分支复习
EN

Stack Overflow用户
提问于 2019-01-16 15:49:54
回答 2查看 720关注 0票数 1

我怎么才能和gerrit一起做一个分支复习呢?我想分析所有的分支变化在一个gerrit变化。

其思想是检查具有多个更改(提交)的分支的代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-16 17:08:49

如果您想要查看一个具有多个提交的分支,那么Gerrit并不是一个合适的工具。Gerrit中的评审是在每次提交时单独执行的。Github或Bitbucket是适合分支审查的工具。

回答您的问题,一个建议: IMHO您应该尝试使用Gerrit,检查每个提交单独,因为这是一个非常好的工作流程。我非常喜欢(也更喜欢)格瑞特策略。

票数 0
EN

Stack Overflow用户

发布于 2021-01-14 18:22:52

我创建了一个git别名,它简化了传统的git工作流(在一个“工作”分支上进行多次提交),并使用提交消息中相同的更改Id将它们自动推送到Gerrit。它可以添加到.gitconfig文件中:

代码语言:javascript
复制
...
[alias]
    gerrit = "!git reset --soft $(git rev-list master..HEAD | tail -1) &&  \
               git commit --amend --no-edit &&                             \
              (git push origin HEAD:refs/for/master; git reset HEAD@{2})"

假设:

  • 您已经为您的主题/修复更改创建了一个分支,并至少放置了一个提交;

用法:git gerrit

这项工作如下:

代码语言:javascript
复制
git reset --soft $(git rev-list master..HEAD | tail -1)

git rev-list master..HEAD | tail -1获得我们在分支上创建的第一个提交的SHA-1 (在从master进行分叉之后),我将称之为“基本”提交。然后,我们将SHA-1提供给:git reset --soft,它将分支指针移回到此提交,保持所有从以后提交到分阶段提交的更改。然后:

代码语言:javascript
复制
git commit --amend --no-edit

我们使用单个--amend对基提交进行分段更改。原始提交消息将被保留,因此将更改-Id。

代码语言:javascript
复制
git push origin HEAD:refs/for/master

这就是一切的重点-我们推到格瑞特.

代码语言:javascript
复制
git reset HEAD@{2}

最后,我们利用reflog历史恢复我们的分支的原始形状,HEAD@{2}意味着我们的头在两个步骤前( commit --amend和第一个reset之前)的修改。

优势:

  • 您可以在工作分支上维护自己的提交粒度,您可以根据逻辑顺序和可读性使用git rebase -i来编辑它们(不要从“基本”提交消息修改-Id);
  • 同时,使用一个命令,您可以将最新的更改上传到Gerrit,使其接受它们作为相同更改的另一个拼贴集,而不使用多个相关更改来垃圾处理更改列表;

不过,我建议保留一个经典的远程分支作为备份并对其进行同步。然后,HEAD@{2}也可以使用$(git rev-parse @{u}),这是远程分支的一个提示,而不是reflog。同样的事情也可以用于与同事共享的分支(但我们必须避免重写历史和push -f)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54220722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档