如何确定目标分支中git冲突的来源?

ijxebb2r  于 2023-05-15  发布在  Git
关注(0)|答案(1)|浏览(240)

在我的工作流中,我将创建一个pull请求,将我的some_feature_fix分支合并到一个上游staging分支中。在一些拉取请求Web UI中,如果有冲突,它会说哪个文件包含冲突,但通常不会说哪些行或其源分支是什么。
这使得解决冲突变得困难,因为我不能简单地在staging中合并,因为这会使我的分支依赖于任何其他分支,如果它们在QA失败,可能会被取消。解决方案是我需要联系冲突分支的开发人员,并以其他方式解决细节问题,要么确保他们的分支在staging上获得批准,要么删除,以便我的分支可以合并。
但是,如果我需要查找源分支的开发人员,我必须在冲突文件上滚动git log,并手动检查日志中的每个分支名称以找到源分支,这样我就可以与其他开发人员一起解决细节问题。
这是非常耗时和令人沮丧的。有没有一种更有效的编程方法?类似于:

$ git checkout staging
$ git pull
$ git checkout some_feature_fix
$ find_conflicting_source_branch.sh staging
other_fix
2g32fytz

2g32fytz1#

您可以看到有冲突的文件,在那一刻,你试图合并它。如果你合并了两个分支,git会用'both modified'和红色显示它们,然后你只需要打开文件并搜索冲突,即'<<<<'和'>>>>>'之间的部分。

$ git checkout staging
$ git pull
$ git checkout some_feature_fix
$ git merge --no-ff staging
# here if there's conflicts you see the files wich need to be checked.
$ git push -u origin some_feature_fix

如果你不想合并分支中的staging,你可以从分支中创建一个中间的staging,在那里合并并解决冲突。

$ git checkout staging
$ git pull
$ git checkout -b staging_solve_conflicts
$ git merge --no-ff some_feature_fix
# solve conflicts
$ git checkout staging
$ git merge --no-ff staging_solve_conflicts

相关问题