SmartGit:在上一次合并时合并项目 I excluded/discarded

SmartGit: Merge items I excluded/discarded on previous merge

假设我有我的分支 Alabama,与 develop 它基于它,我有一个(新的)分支 Boston,它也基于 develop,与开发相比没有变化。

Boston 是我当前的本地分支,我将 Alabama 合并到我的工作树中,但放弃了对 foo 的更改。我推了,没有冲突,做了一些其他的提交,一切都很好。现在我决定我需要对 foo 进行这些更改:我尝试再次将 Alabama 合并到我的工作树中,但是对 foo 的更改不会合并,因为 SmartGit 似乎有点记得我决定不使用这些更改,现在自动为我放弃它们。

foo 的更改转化为 Alabama 的正确方法是什么? ;-)

解决问题的一个策略是 rebase Alabama 上的 Boston 分支。考虑下图:

Alabama: d <- A1 <- A2
Boston:  d <- M1 <- B1 <- B2

这里的 d 提交是 develop 分支中的一个提交(可能有很多)。您可以看到 AlabamaBoston 都位于这个共同历史之上。 A 提交对应于 Alabama 分支,其中一个或多个包含您要引入 Boston 分支的文件 foo 的更改。 B 提交对应于 Boston 分支。提交 M1 是由于您尝试将 Alabama 合并到 Boston 而放弃对文件 foo.

的更改而导致的合并提交

如果您 rebase Alabama 上的 Boston 分支,之后图表将如下所示:

Alabama: d <- A1 <- A2
Boston:  d <- A1 <- A2 <- M1' <- B1' <- B2'

执行此操作的命令如下:

git checkout Boston
git rebase Alabama

换句话说,您在 Boston 分支中所做的工作现在将位于 Alabama 之上,其中将包括对文件 foo 的更改。一些提交上的主要标记(例如 B1')表明这些实际上是 new Boston 分支中的提交。此外,您可能会在变基期间遇到合并冲突。特别是,当您在 Alabama 之上重播 M1 提交时,预计会发生冲突,因为这两个提交会有非常相似的更改。