我想回到我的代码历史记录(更改工作树),以查找引入某个错误的提交记录,但不想删除任何提交记录。只需更改我的工作树,直到找到错误为止,然后再回到最新版本进行工作。
这需要两个命令:一个是回到较早的提交记录,另一个是检出最新的版本。
请问如何执行这两个命令?
谢谢。
原文中的html标签已被保留。
我想回到我的代码历史记录(更改工作树),以查找引入某个错误的提交记录,但不想删除任何提交记录。只需更改我的工作树,直到找到错误为止,然后再回到最新版本进行工作。
这需要两个命令:一个是回到较早的提交记录,另一个是检出最新的版本。
请问如何执行这两个命令?
谢谢。
将工作树还原到特定修订版本 N:
bzr revert -rN
要将工作树回滚到分支中的最新修订版本:
bzr revert
bzr blame
就不会按照我预期的方式运行。从唐的回答中使用bzr update -r<rev>
更好地实现了我的需求,即以“查找引入某个错误的提交”形式进行纯考古学。使用bzr update -r<rev>
并跟踪重命名和重构可以更好地使用bzr blame
进行跟踪。 - Robie Basak有两种方法可以将您的工作树回退到第 N 个修订版本。其中一种方法已经在其他答案中提到:
bzr revert -rN
这将修改所有必要的文件,使工作树与修订版本N的内容相匹配。如果运行bzr status
,它将显示所有这些更改的文件。如果运行bzr commit
,那么所有这些向后的更改都将被提交,您的HEAD修订版本现在将看起来像修订版本N。
要回到分支中的最新版本:
bzr revert
你也可以运行 bzr update
, 但如果你的分支是一个检出,那么可能会获取一些更新的修订版本。
回到以前的另一个选项是这样的:
bzr update -rN
这两者的区别在于 bzr update
会让你看起来好像没有做出任何更改。只是你的工作树已经过期了。
要回到你分支中的最新版本:
bzr update
bzr revert -rN
当然是对问题直接的回答,但是如果你需要检查大量的提交以测试是否存在错误,使用二分法会更加高效。有一次我遇到了一个bug,最后一个已知的好的提交是在300个提交之前,而使用二分法只用8次尝试就找到了有问题的提交(我的意思是,在300个提交中我只需要检查8个就能找到引入该bug的提交)。
http://doc.bazaar.canonical.com/plugins/en/bisect-plugin.html
如果你感到要检查的可能提交数量太多而不知所措,使用这种方法可以显著减少涉及的工作量!你可以使用 bzr log --forward 命令以 DESC 排序查看先前的版本
并且你可以使用 bzr revert -r 命令将版本改变为指定版本
如果你想还原到最后一个版本,只需执行 bzr revert 命令