git 将其他人的提交或拉取请求中的更改合并到本地代码中的正确方法是什么?

92vpleto  于 2022-12-25  发布在  Git
关注(0)|答案(2)|浏览(238)

很抱歉,如果标题不是太清楚,我不太清楚如何措辞,但我会尝试在这里更详细地解释。
早在10月份,我就开始着手一个新项目--用Python编写的Discord音乐机器人,因为我不喜欢当时能找到的现有自托管选项。我决定在GitHub上为它创建一个存储库,既可以供其他人使用,也可以使用git pull在我用来托管它的示例的VPS上更容易地更新文件。
还没有人对它做过任何分叉或拉取请求,但最近我开始思考它,意识到我不完全确定将别人的代码集成到我的代码中的过程是什么?
比如,如果有人开始修复bug或开发他们自己的特性,做了一个PR,而我想接受它并与我的合并-但我也在我的本地文件中单独做一些工作,除了手动查看并决定如何集成之外,是否有任何适当的程序将他们的更改与我的合并?

mefy6pfw

mefy6pfw1#

虽然git允许你设置远程repos到特性分支,但你通常只会把/ PR拉到某种集成分支。
一个常见的模式是有一个master和一个develop分支。主分支是一个真理的来源,PR从develop合并到master
develop是一个积分分支,它是从master分支出来的,变化被PR 'd到develop,然后最终PR' d到master
开发人员应从develop中切出分支,进行更改,然后PR到develop中进行评审。
当你和一个同事在同一个项目中处理变更时,经常进行PR和整合是很重要的,这样其他人就可以将工作整合到他们自己的分支中。
经常在develop上执行git pull或者接收开发人员可能做出的最新更改是一种常见的做法。
所以,为了回答你的问题,你既可以集成到一个公共分支中,又可以将这些更改拉到你自己的特性分支中,经常进行更改,这样更容易合并。
有关常用的分支策略,请参见gitflow

qkf9rpyu

qkf9rpyu2#

这个问题也适用于更简单的情况,例如,当您在两台不同的计算机上进行更改时。
除了手动查看和决定如何集成之外,是否有任何适当的程序将他们的更改与我的更改相结合?
1.在大多数的合并中,并没有冲突处理,因为更改是在不同的文件中,即使更改影响到相同的文件,git也可以自动解决它们。

  1. Rebasing可以帮助减少git无法自动解决的冲突数量。
  2. merge-strategies也能有所帮助
    1.如果真的有冲突,而且你不知道该怎么做,那么你就需要自己解决它们。许多工具提供了一个三向合并来简化这个过程。

相关问题