主分支更改后合并开发分支(已提交)
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
您的同事已提交 C
和 D
。现在让我们将 development
合并到 master
.
git checkout master
git merge development
A---B---C---D---G <<< development, master <<< HEAD
\ /
E-------F
此时,在您的 development
分支上进行的提交可以从任一分支访问,但提交 C
和 D
仍然存在。
我讨厌手动合并代码。我更喜欢先将 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 分支保持同步。
我已经在 development
分支上工作了一段时间,与此同时,另一位开发人员一直在对 master
分支进行更改(多次提交到 master)。
master
分支现在有我的 development
分支中没有的内容。
我可以合并 development
分支而不影响 master
分支中的新提交吗?即不覆盖 master
?
处理此问题的最佳方法是什么?
假设你们正在处理项目的不同方面(并且取决于您的 IDE),您通常可以指定要 commit/push 的文件。我建议先从 master
中提取,然后复制您的更改并提交您的更改。然后创建拉取请求并合并分支。在使用 git 时最好谨慎行事,即使它需要更多的步骤。
不,git 中的合并原则是附加的,你不能 "overwrite" 提交合并。
初始情况
A---B---C---D <<< master
\
E---F <<< development <<< HEAD
您的同事已提交 C
和 D
。现在让我们将 development
合并到 master
.
git checkout master
git merge development
A---B---C---D---G <<< development, master <<< HEAD
\ /
E-------F
此时,在您的 development
分支上进行的提交可以从任一分支访问,但提交 C
和 D
仍然存在。
我讨厌手动合并代码。我更喜欢先将 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 分支保持同步。