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
分支中的一个提交(可能有很多)。您可以看到 Alabama
和 Boston
都位于这个共同历史之上。 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
提交时,预计会发生冲突,因为这两个提交会有非常相似的更改。
假设我有我的分支 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
分支中的一个提交(可能有很多)。您可以看到 Alabama
和 Boston
都位于这个共同历史之上。 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
提交时,预计会发生冲突,因为这两个提交会有非常相似的更改。