回到Bazaar的旧版本

32

我想回到我的代码历史记录(更改工作树),以查找引入某个错误的提交记录,但不想删除任何提交记录。只需更改我的工作树,直到找到错误为止,然后再回到最新版本进行工作。

这需要两个命令:一个是回到较早的提交记录,另一个是检出最新的版本。

请问如何执行这两个命令?

谢谢。


原文中的html标签已被保留。

我从未使用过Bazaar,但在SVN中,您所提到的操作是“更新到版本”和“更新到head”。如果Bazaar中的相关命令使用类似的语言,那就知道了。 - jhocking
5个回答

23

将工作树还原到特定修订版本 N:

bzr revert -rN

要将工作树回滚到分支中的最新修订版本:

bzr revert

这会让bzr认为你的工作树有本地更改,然后bzr blame就不会按照我预期的方式运行。从唐的回答中使用bzr update -r<rev>更好地实现了我的需求,即以“查找引入某个错误的提交”形式进行纯考古学。使用bzr update -r<rev>并跟踪重命名和重构可以更好地使用bzr blame进行跟踪。 - Robie Basak

16

有两种方法可以将您的工作树回退到第 N 个修订版本。其中一种方法已经在其他答案中提到:

bzr revert -rN

这将修改所有必要的文件,使工作树与修订版本N的内容相匹配。如果运行bzr status,它将显示所有这些更改的文件。如果运行bzr commit,那么所有这些向后的更改都将被提交,您的HEAD修订版本现在将看起来像修订版本N。

要回到分支中的最新版本:

bzr revert

你也可以运行 bzr update, 但如果你的分支是一个检出,那么可能会获取一些更新的修订版本。

回到以前的另一个选项是这样的:

bzr update -rN

这两者的区别在于 bzr update 会让你看起来好像没有做出任何更改。只是你的工作树已经过期了。

要回到你分支中的最新版本:

bzr update

5
其他回答者给出的bzr revert -rN当然是对问题直接的回答,但是如果你需要检查大量的提交以测试是否存在错误,使用二分法会更加高效。有一次我遇到了一个bug,最后一个已知的好的提交是在300个提交之前,而使用二分法只用8次尝试就找到了有问题的提交(我的意思是,在300个提交中我只需要检查8个就能找到引入该bug的提交)。 http://doc.bazaar.canonical.com/plugins/en/bisect-plugin.html 如果你感到要检查的可能提交数量太多而不知所措,使用这种方法可以显著减少涉及的工作量!

4

将工作树更改为先前修订N中的状态。

bzr revert -r N

要将您的工作副本更新到最新修订版本中所处的状态:

bzr up

Bazaar Quick Reference Card


0

你可以使用 bzr log --forward 命令以 DESC 排序查看先前的版本

并且你可以使用 bzr revert -r 命令将版本改变为指定版本

如果你想还原到最后一个版本,只需执行 bzr revert 命令


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接