我知道我之前已经讨论过这个问题,但我总是很难做到这一点!
这是我的日志:
这就是我想要做的事情:
HEAD
的唯一条目应该是完成标准化... 所以我想最终:
Completed ...
\
\
Introduced...
Bug fix...
Added new help button..
down to
Added new window
/
/
Standardised the placement...
使用 TortoiseGit实现此目的的最简单方法是什么?
感谢。
不知怎的,我设法把它搞砸了。在第一个答案之后,一切顺利。最后,我删除了本地和远程的功能分支,并对主机进行了强制推送。事情似乎正确,但我失去了一些代码更改。所以我不得不再次添加一个新条目以使其正确:
所以我想我现在必须离开它。从技术上讲,我必须重做的那些更改是提交的一部分,所以我很困惑。
我有原始源文件夹的副本,功能分支仍在那里,所以我们可以再试一次,但我不确定我哪里出错了。
我知道出了什么问题。我希望结束的消息是在RC文件的其他更改之前。因此它抹去了之前所做的改变。我不明白为什么它没有引起任何冲突。
答案 0 :(得分:2)
有几种方法可以做到。
一种方法是切换到workbook-monthly-data-validation
分支并将其重置(硬)到您希望在此分支上进行的最新提交(首先切换到它然后使用上下文菜单进行硬重置)。
然后选择" Rebase on"在您要将其他两个放到的提交的上下文菜单上。
在rebase对话框中,为要更改提交文本的提交选择edit,然后在合并提交中选择skip。
现在,您可以根据需要在workbook-monthly-data-validation
分支上进行所有提交。
之后你必须修改master:切换到它并将其重置为功能分支之前的最后一次提交。然后再次合并功能分支。
如果在发现错误并在那里提交更改时切换回刚刚合并的分支,则可以避免此类广泛的变基会话。然后,您可以决定是否重置主分支(在功能分支之前提交并再次合并),或者只是将功能分支再次合并到主分支。这看起来像下面的szenario:
| Bugfix (merge)
| \
| | Introduced...
| | Bug fix...
| Completed ... (merge)
| \|
| | Added new help button..
| | down to
| | Added new window
| /
| Standardised the placement...
通过这种方式,您仍然可以看到哪些提交属于您的功能分支,但您不必进行如此多的rebase / resets和强制推送。
答案 1 :(得分:1)
我不能保证这是最好的解决方案,但它有效(这是最低要求,对吧?)。时间和其他答案将告诉我们是否有更好/更快的方式。
您将获得Rebase用户界面。
在您的示例中,您之前的提交意味着留在' master' ("完成标准化...")这可能会导致此操作期间发生冲突,具体取决于每个提交受影响的文件。如果是这样,请确保不要包含您未提交到“工作簿”的提交内容的更改。
无论哪种方式,Tortoise也会暂停,让您编辑您设置为编辑的提交的消息。只需更改文本字段中的消息,然后单击“提交”继续。
此时,所需的提交将存在于' master'并且'锻炼'。现在删除' master'
中的那些