首页 > 解决方案 > 吉特。将其他人的本地更改合并到自己的存储库中

问题描述

前段时间,我从一个对我没有影响的第三方那里获得了一个项目。我将Version 1收到的内容提交到我的存储库中,没有进行任何更改。

之后,我对其文件进行了更改并提交了它们。

最近我收到了一个存档,其中包含上述第三方所做的更新。

他们从Version 1我之前收到的开始,并Version 2更改了很多文件。

现在我需要:

  1. 跟踪第三方更改 ( Version 1 -> Version 2)。

  2. 方便地将他们的更改合并到我的项目中。

我尝试了以下方法:

  1. update从 的master分支初始提交创建一个分支Version 1

  2. 将我收到的更新推送到update分支。

  3. 合并update到`master.

这种方式有我想解决的缺点:

假设我file_A前一段时间发生了变化。

file_A也已被第三方更改,并且他们的更改在我的存储库中标记为最近的日期,因为我刚刚提交了它们。

当我合并分支时,他们的一些更改可能会覆盖我的更改,因为它们不会发生冲突(它们的提交是在我的之后进行的)。

我唯一能做的就是手动修改所有更改的文件。

我想使Version 2提交成为过去(就在 之后Version 1)将通过在我们双方更改的每个文件中引发冲突来解决我的问题。

总而言之,我认为将我们双方都进行了更改的所有文件标记为冲突在我的情况下会起作用,但任何建议都值得赞赏。

这是我现在拥有的可视化图表:

master: V1---A1---A2
          \
update:    ------------V2

我想要达到的目标:

master: V1---V2---A1'---A2'

标签: git

解决方案


第一的

git fetch --all

然后

git rebase nameofremotebranch

您的本地分支将使用来自远程的新提交进行更新,并且您的提交将放在所有内容之上。除非他们发生冲突。然后研究交互式rebase,这将需要一些手动工作。

我假设你已经这样做了

git远程添加(等)

并添加了遥控器。


推荐阅读