Fai*_*yet 13 mercurial tortoisehg
我正在使用TortoiseHg进行版本控制.我在提交到本地后推送到远程存储库.如何撤消到特定的提交点?
有三个不同的推动,我想恢复到第一次推动.我读到了关于hg rollback和hg undo命令的内容,但我不知道如何使用它们来完成此任务.
Mik*_*x6r 14
因为您已推送到另一个存储库,所以无法知道更改传播到的位置.如果你没有推动,你可以做撤消,但是只撤消只做最后一次交易.
真正修改历史记录的另一个选项是strip命令,但同样,因为你已推送,这不是一个选项.如果您剥离了本地,那么下次拉动时您仍然可以获得更改集.
如果您可以访问中心,则可以将其删除,但如果其他人已经撤消了更改,则下次推送时它们会再次出现在中央.
此时您唯一安全的选择是退出命令.这基本上会在提示处创建一个新的变更集,以反转您意外添加的变更集.
Obe*_*nne 14
从"纯粹的"Mercurial的角度来看,Mike是正确的 - 推动的变更集是你无法控制的.但是,在实践中,这通常是一个过于严格的观点.
与迈克所说的相反,剥离已推动的变更集可能是一种选择.这取决于您是否可以控制中央存储库(也可以在那里进行剥离)以及您的团队/社区的规模以及它的组织方式.
如果您确定没有人已经撤消了您的不良变更集,只需剥离您的本地和中央仓库 - 已完成,历史记录已删除.
如果有人可能已经取消了您的不良变更集,您也必须剥离本地和中央仓库,并且您必须通知所有推动团队成员在其本地回购中删除不良变更集(或从被剥夺的中央回购).如果你很幸运,每个人都按照你说的去做.否则,变更集迟早会再次出现在中央仓库中.
最重要的是剥离可能是像你这样的案件的解决方案 - 你必须平衡成本(你的团队负担额外的工作)和利益(干净的历史).
如果您不小心添加了大型二进制文件,那么收益将超过成本的实际示例.在这种情况下,可能每个团队成员都喜欢同步剥离而不是使用破碎的存储库.
更新:您可以使用服务器端挂钩来防止剥离的变更集重新进入中央存储库 - 请在此处阅读更多内容.
归档时间: |
|
查看次数: |
5554 次 |
最近记录: |