主分支更改后合并开发分支(已提交)

Merging development branch after master branch has changed (committed)

我已经在 development 分支上工作了一段时间,与此同时,另一位开发人员一直在对 master 分支进行更改(多次提交到 master)。

master 分支现在有我的 development 分支中没有的内容。

我可以合并 development 分支而不影响 master 分支中的新提交吗?即不覆盖 master?

中的任何新作品

处理此问题的最佳方法是什么?

假设你们正在处理项目的不同方面(并且取决于您的 IDE),您通常可以指定要 commit/push 的文件。我建议先从 master 中提取,然后复制您的更改并提交您的更改。然后创建拉取请求并合并分支。在使用 git 时最好谨慎行事,即使它需要更多的步骤。

不,git 中的合并原则是附加的,你不能 "overwrite" 提交合并。

初始情况

A---B---C---D <<< master
     \
      E---F <<< development <<< HEAD

您的同事已提交 CD。现在让我们将 development 合并到 master.

git checkout master
git merge development

A---B---C---D---G <<< development, master <<< HEAD
     \         /
      E-------F

此时,在您的 development 分支上进行的提交可以从任一分支访问,但提交 CD 仍然存在。

我讨厌手动合并代码。我更喜欢先将 master 合并到我的 dev 分支中。这样,如果我搞砸了,生成的代码在我的 dev 分支中,而不是在 master 中。这也有利于审查人员更轻松地进行代码审查(在我的案例中发生在合并发生之前)。

例如:

A---B---C---D---G <<< development, master <<< HEAD
 \          \   /
  -----E------F

在本地工作区处理此问题的另一种方法是 rebase 您的本地分支。这看起来像下面这样:

初始状态:

A---B---C---D <<< master
     \
      E---F <<< development <<< HEAD

Rebase 后你的分支应该是这样的,如果发生合并冲突,你会看到它并可以在本地解决它,之后你可以像往常一样提交。

git rebase master
A---B---C---D <<< master
             \
              E---F <<< development <<< HEAD

请注意,您的分支尚未提交,只是与 master 分支保持同步。