15

使用化石/bzr 时是否可以模拟“git stash”的行为?

基本上我有兴趣处理以下工作流程:

  • 在某些时候,源代码树有状态 X,它被提交
  • 我继续编写新代码,我写了一段时间,我看到了重构的机会
  • 我现在不能提交,因为我开始做的改变还没有完成,它还不是原子的
  • 此时我会执行“git stash”,保存当前工作并返回状态 X
  • 我会进行重构和提交,源代码现在有状态 Y
  • 我会将状态 Y 中的源代码与 stash 中的代码合并,完成更改以使其成为原子,然后再次提交,将源代码推送到状态 Z

我认为通常可以在使用另一个 SCM 时模拟这种情况,方法是在状态 X 中分支代码而不是执行“git stash”,在该分支中进行重构,然后将分支合并回主分支。但我知道分支并不总是便宜的操作。那么有没有更好的特定方法最终依赖于化石/bzr 的特定特征?

4

3 回答 3

28

使用bzr shelvebzr unshelve命令。

于 2009-12-16T10:54:57.900 回答
12

您可以使用patch系统的命令。

  • 首先,您通过将生成的差异存储为 .patch 文件来进行“存储”:

    $scmtool diff > working.patch

  • 然后重置您的工作目录。

  • 稍后,应用补丁:

    patch -p1 --dry-run < working.patch

  • 然后这个工作,删除--dry-run以真正应用补丁。

于 2009-12-18T11:40:39.367 回答
8

stash命令最近在化石中实施。你必须检查你将stash在可用命令列表中看到的最新的化石可执行文件。

这是有关其语法的 Web 帮助的链接。

于 2011-11-25T12:01:28.160 回答