gpt4 book ai didi

git - 如何有效地审查 git 子模块更新/ rebase ?

转载 作者:行者123 更新时间:2023-12-04 00:57:03 27 4
gpt4 key购买 nike

我们的项目使用 git submodule固定我们的库依赖项之一。

我们定期 rebase 子模块以跟上上游的变化,我们在它上面还有一组提交,我们不能轻易上游。

当有人 rebase 子模块时,我只在父仓库的 git diff 中看到:

--- a/mysubmodule
+++ b/mysubmodule
@@ -1 +1 @@
-Subproject commit abc12345abc12345abc12345abcd12345abc1234
+Subproject commit efg67890efg67890efg67890efg67890efg67890

这不是很有用。当我 git diff 子模块中的这些提交时,我得到了很多输出,包括所有上游更改,我们的提交位于其间。我无法轻易判断某些对我们自己的提交执行的冲突解决是否引入了一些错误。

如何有效地对子模块的更改进行代码审查?

最佳答案

使用 git range-diff它正是为此目的而设计的,用于审查提交范围。

如果你的父提交仓库有:

-Subproject commit abc123
+Subproject commit efg678

然后 cd 进入您的子模块并运行(注意三点 ...):

git range-diff abc123...efg678

示例输出解释:

git range-diff output explained

  • 每个提交行显示 rebase 前后的提交 SHA。
  • 顶部的绿线显示上游项目中的新提交。如果您想了解自上次 rebase 以来上游发生了什么变化,请阅读它们。
  • 黄色 线表示 未更改 的 rebase 。
  • 线是作为冲突解决方案的一部分被删除的提交(例如,如果您将一个 patch-on-top 贡献到上游项目中)。
  • 绿 行是作为冲突解决方案的一部分添加的提交(例如,如果需要新的自定义以使您的项目使用新的上游代码)。
  • 红绿 线显示作为 rebase 的一部分更改的提交(例如,当冲突解决必须更改您的 commit-on-top 以便与修改后的一起工作时上游代码)。

    当它们出现时,它们还包含一个正常的差异,因此您可以检查差异。

作为审查的一部分,您应该特别检查添加/删除顶层提交是否正确(或者是否意外删除了一些),以及冲突解决(红绿线)是否正确.

关于git - 如何有效地审查 git 子模块更新/ rebase ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61668461/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com