Git -在基于PR的工作流中使用相关分支

vql8enpb  于 2023-08-01  发布在  Git
关注(0)|答案(2)|浏览(139)

我在一个基于PR的工作流程中工作,这里是创建的情况
master创建了两个分支

1. branchA library changes, with its own ongoing PR
2. branchB app depending on library, with its own ongoing PR

字符串
两者都是两个不同的开发者。
branchA更改了一些API,现在branchB必须适应这些API。
branchB必须接受branchA的这些更改,以便在API changes之后测试一切是否正常。我现在正在遵循这种方法。
branchB开始

git fetch 
git merge branchA


构建代码并检查branchB中的更改是否与branchA中的API更改同步。

第1期-接下来,我将更改推送到PR,但现在PR中包含了branchA中的文件以及branchB中的更改。这是因为branchA尚未合并到master,并且仍在其自己的PR审查中。

为避免上述问题,我会采取以下措施-
我在git文件夹外创建了我的更改的本地副本,使用

git reset --hard


现在我把这些更改从本地文件夹带到git,然后推送到PR。

第2期-现在由于Continuous Integration(CI) jenkins的原因,branchAbranchB PR的构建都失败。为了避免这种情况,我禁用了jenkins上的app构建,以便branchA PR通过CI。然后,我在app构建打开的情况下,按下branchB
问题-

1.由于相关性,应如何维护两份PR,以便每份PR都有自己的文件供审查。
1.我们处理CI的方法是否正确?即禁用应用程序,直到库更改进入,然后推送应用程序
1.或者,通过内部讨论将一个分支与其他分支(after individual PRs are reviewed)合并,创建包含所有更改的one big PR,然后推送。

blpfk2vs

blpfk2vs1#

你描述了一个后端/前端工作流。根据我的经验,后端是先做的,然后是前端。这是最简单的。
也许你描述了一个截止日期很紧的情况。这样,后端可以只准备一个API,而不需要实际的业务逻辑,并提供具有正确格式的假数据,以便前端可以更快地开始工作。另一种解决方案是,完全在前端模拟假API,但这更脆弱,因为通常后端更了解API的工作方式以及确切的数据格式。
但是如果你想要你的GIT工作流程(我将描述前端的工作):

  • 通常,后端/前端部件被放置在单独的文件夹中。
  • 当前分支为branchB时 checkout 后端文件夹:
git checkout branchA -- src/backend

字符串
其中src/backend-后端文件夹

  • 后端文件被添加到索引中,因此将其从索引中删除:
git reset src/backend


(You也可以使用git restore

  • 完成前端工作后,在前端暂存任何新文件:
git add src/frontend

  • 提交并推送到origin/branchB
  • 如果不需要后端文件,请清除它们:
git clean src/backend

hc8w905p

hc8w905p2#

OP在评论中询问如果两个分支都是后端,那么我们就有了在不同分支中处理相同文件的情况!
嗯,它变得更有趣,但解决方案可能更容易:

  • 您在branchB上,准备一个包含branchA更改的补丁,将其放置在存储库之外:
git diff ...branchA > ../patch

字符串

  • 将修补程序应用于当前branchB
git apply ../patch

  • 在您的功能上工作,您可以更改在branchA中更改的相同文件
  • 通过反转补丁程序从branchA回滚更改:
git apply -R ../patch

  • 现在您只有您的更改、提交和推送

请注意,这更容易出错,因为您可能会在相同的代码行上工作…
为了改进DX,所有这些场景都可以被脚本化/自动化,添加到git中,并提供给团队的所有成员。

相关问题