将前两个条目从 master 分支移动到现有的合并功能分支
Moving top two entries from master branch into an existing merged feature branch
我知道我之前讨论过这个,但我总是很难把它弄好!
这是我的日志:
这就是我想要做的:
- 将前 2 个条目移至 workbook-monthly-data-validation 分支。
- 从顶部条目开始编辑那一秒的消息。 大应该是错误。
HEAD
的唯一条目应该是完成标准化...
所以我想结束:
Completed ...
\
\
Introduced...
Bug fix...
Added new help button..
down to
Added new window
/
/
Standardised the placement...
再次使用 TortoiseGit 实现此目的的最简单方法是什么?
谢谢。
更新
不知怎么的,我设法把它填满了一点。在对某个点的第一个答案之后,一切都很好。最后,我删除了本地和远程的功能分支,并强制推送了 master。事情似乎是正确的,但我丢失了一些代码更改。所以无论如何我不得不再次添加一个新条目以使其正确:
所以我想我现在必须离开它了。从技术上讲,我不得不重做的那些更改是提交的一部分,所以我很困惑。
我确实有原始源文件夹的副本,功能分支仍然存在,所以我们可以再试一次,但我不确定哪里出错了。
我知道出了什么问题。我想在开头结束的那条消息是在对 RC 文件进行其他更改之前。所以它抹杀了之前所做的更改。我不明白为什么它没有引发任何冲突。
我不能保证这是最好的解决方案,但它确实有效(这是最低要求,对吧?)。时间和其他答案会告诉你是否有 better/faster 方法。
- Switch/Checkout 'workbook' 分支
- Ctrl-click-select 最后 2 个提交('master' 上的那些你想移动到 'workbook'),右键单击,Cherry 选择这些提交
您将获得 Rebase UI。
- 将要更改消息的一个提交更改为 "Edit",将另一个更改为 "Pick"(默认)
- 执行这个。
在您的示例中,您有一个先前的提交将保留在 'master' ("Completed the standardisation...") 这可能会导致在此操作期间发生冲突,具体取决于每次提交所影响的文件。如果是这样,请确保您不包括您不移动到 'workbook'.
的提交的更改
无论哪种方式,Tortoise 也会暂停让您编辑您设置为编辑的提交的消息。只需更改文本字段中的消息,然后单击“提交”继续。
到那时,所需的提交将同时存在于 'master' 和 'workout' 中。现在从 'master'
中删除那些
- Switch/Checkout 'master'
- 右键单击 "Completed..." 提交(合并后第一次),将 'master' 重置为此,选择硬重置
有几种方法可以做到。
一种方法是切换到 workbook-monthly-data-validation
分支并将其重置(硬)到您希望在此分支上拥有的最新提交(首先切换到它,然后使用上下文菜单硬重置)。
然后 select "Rebase onto" 在要将其他两个提交的上下文菜单上。
在变基对话框中 select 编辑要更改提交文本的提交并 select 跳过合并提交。
现在你已经在 workbook-monthly-data-validation
分支上完成了所有你想要的提交。
之后你必须修改 master:切换到它并将它硬重置为功能分支之前的最后一次提交。然后再次合并功能分支。
如果您在发现错误时切换回刚刚合并的分支并在那里提交更改,则可以避免如此广泛的变基会话。然后你可以决定是重置你的主分支(到你的功能分支之前的提交并再次合并)还是你只是再次将功能分支合并到主分支。这看起来像下面的场景:
| Bugfix (merge)
| \
| | Introduced...
| | Bug fix...
| Completed ... (merge)
| \|
| | Added new help button..
| | down to
| | Added new window
| /
| Standardised the placement...
这样你仍然可以看到哪些提交属于你的功能分支,但你不必做那么多rebases/resets和强制推送。
我知道我之前讨论过这个,但我总是很难把它弄好!
这是我的日志:
这就是我想要做的:
- 将前 2 个条目移至 workbook-monthly-data-validation 分支。
- 从顶部条目开始编辑那一秒的消息。 大应该是错误。
HEAD
的唯一条目应该是完成标准化...
所以我想结束:
Completed ...
\
\
Introduced...
Bug fix...
Added new help button..
down to
Added new window
/
/
Standardised the placement...
再次使用 TortoiseGit 实现此目的的最简单方法是什么?
谢谢。
更新
不知怎么的,我设法把它填满了一点。在对某个点的第一个答案之后,一切都很好。最后,我删除了本地和远程的功能分支,并强制推送了 master。事情似乎是正确的,但我丢失了一些代码更改。所以无论如何我不得不再次添加一个新条目以使其正确:
所以我想我现在必须离开它了。从技术上讲,我不得不重做的那些更改是提交的一部分,所以我很困惑。
我确实有原始源文件夹的副本,功能分支仍然存在,所以我们可以再试一次,但我不确定哪里出错了。
我知道出了什么问题。我想在开头结束的那条消息是在对 RC 文件进行其他更改之前。所以它抹杀了之前所做的更改。我不明白为什么它没有引发任何冲突。
我不能保证这是最好的解决方案,但它确实有效(这是最低要求,对吧?)。时间和其他答案会告诉你是否有 better/faster 方法。
- Switch/Checkout 'workbook' 分支
- Ctrl-click-select 最后 2 个提交('master' 上的那些你想移动到 'workbook'),右键单击,Cherry 选择这些提交
您将获得 Rebase UI。
- 将要更改消息的一个提交更改为 "Edit",将另一个更改为 "Pick"(默认)
- 执行这个。
在您的示例中,您有一个先前的提交将保留在 'master' ("Completed the standardisation...") 这可能会导致在此操作期间发生冲突,具体取决于每次提交所影响的文件。如果是这样,请确保您不包括您不移动到 'workbook'.
的提交的更改无论哪种方式,Tortoise 也会暂停让您编辑您设置为编辑的提交的消息。只需更改文本字段中的消息,然后单击“提交”继续。
到那时,所需的提交将同时存在于 'master' 和 'workout' 中。现在从 'master'
中删除那些- Switch/Checkout 'master'
- 右键单击 "Completed..." 提交(合并后第一次),将 'master' 重置为此,选择硬重置
有几种方法可以做到。
一种方法是切换到 workbook-monthly-data-validation
分支并将其重置(硬)到您希望在此分支上拥有的最新提交(首先切换到它,然后使用上下文菜单硬重置)。
然后 select "Rebase onto" 在要将其他两个提交的上下文菜单上。
在变基对话框中 select 编辑要更改提交文本的提交并 select 跳过合并提交。
现在你已经在 workbook-monthly-data-validation
分支上完成了所有你想要的提交。
之后你必须修改 master:切换到它并将它硬重置为功能分支之前的最后一次提交。然后再次合并功能分支。
如果您在发现错误时切换回刚刚合并的分支并在那里提交更改,则可以避免如此广泛的变基会话。然后你可以决定是重置你的主分支(到你的功能分支之前的提交并再次合并)还是你只是再次将功能分支合并到主分支。这看起来像下面的场景:
| Bugfix (merge)
| \
| | Introduced...
| | Bug fix...
| Completed ... (merge)
| \|
| | Added new help button..
| | down to
| | Added new window
| /
| Standardised the placement...
这样你仍然可以看到哪些提交属于你的功能分支,但你不必做那么多rebases/resets和强制推送。