在 TortoiseGit 下将分支提取到另一个

Extracting branch into another under TortoiseGit

在 TortoiseGit 下工作(在 Windows 7 上),想象一下有一个 MASTER 分支,从中构建了一个 SPECIFIC 分支。

SPECIFIC 包含一些 参数 更改和一些常规 代码 更改。

我的问题

如何创建一个只保留代码更改的新分支(从 MASTER 开始)?

(当然,我会整理一下到底是什么代码改动,会保留。)

我试过的

因此,我从 MASTER 创建了 NEW 分支,并尝试将 SPECIFIC 变基到 NEW。我所能做的就是做一个快进合并,这不是很有趣。

我从 rewrite Git history but I don't see how to get the equivalent to git rebase -i in the TortoiseGit interface. I also looked in the TortoiseGit manual 中寻求灵感,它正确地告诉我 rebase 非常复杂。

从概念上讲,我真正想做的是diff SPECIFIC 和 NEW,手动理清差异。

更好的是,NEW 最终可能是相同的 SPECIFIC 但恰好包含两个提交:代码更改和参数更改。

任意

你有很多问题,我试着回答这些问题,希望我不会错过任何重要的事情。

最重要的对话框是您的日志对话框。在这里你可以 select 两次提交(例如,你的 master 分支的最新提交和你的其他分支的最新提交)然后 select "Compare revisions"。然后你会得到一个对话框,显示所有更改文件,然后你可以一个一个地比较这些文件。您还可以 select "Show changes as unified diff" 以获得统一的差异文件(您可以保存此文件,然后在需要这些更改时再次应用它,例如使用 TortoiseGitMerge;右键单击-移动创建的 .patch工作树文件夹和 select "Review/Apply single patch" 上的文件)。此外,您可以 select 只提交一次并查看对前一个提交的更改,或者也可以将其与当前工作树进行比较(即,您可以比较每个文件并应用您想要的更改 keep/make) .

变基 (rebase -i) 也适用于日志对话框 - 但是它会更改历史并将一个分支的提交放到另一个分支上。首先切换到您要变基的分支,然后右键单击要将更改变基到的 commit/branch 和 select "Rebase"。然后会显示一个 rebase -i 等效对话框,您可以在其中重新排序、取消 select、编辑和压缩提交。

另一种方法可能是您切换到您的主服务器,然后 select 所有您想要应用其更改的提交和 select "Cherry pick commits" 在日志对话框上下文菜单中。这样你就不会改变你的 "parameters" 分支,你可以将这些更改应用到你当前的分支 - 如果你想将几个提交合并为一个,选择 "squash".