【发布时间】:2018-04-26 10:07:03
【问题描述】:
我有两个分支,比如说 A 和 B。我在 A 中做了一些更改并将我的代码提交到 A,然后我将 A 合并到 B 并进行了推送。
现在的问题是我在 B 中添加了一些不必要的文件。
我想恢复到 B 的先前版本。我看到很少有解决方案来执行 hg update -r 然后强行将其推送到 repo,这可能会导致我不想做的新头。
请让我解释一下,这是第一次这样做。谢谢。
【问题讨论】:
标签: mercurial tortoisehg
我有两个分支,比如说 A 和 B。我在 A 中做了一些更改并将我的代码提交到 A,然后我将 A 合并到 B 并进行了推送。
现在的问题是我在 B 中添加了一些不必要的文件。
我想恢复到 B 的先前版本。我看到很少有解决方案来执行 hg update -r 然后强行将其推送到 repo,这可能会导致我不想做的新头。
请让我解释一下,这是第一次这样做。谢谢。
【问题讨论】:
标签: mercurial tortoisehg
你可以自己动手,删除不必要的文件,提交并推送。
去你的B分行
hg update -r 3316
删除文件,提交并推送
hg forget yourfilethere
hg commit -m "Remove unecessary files"
hg push
如果有帮助请告诉我!
【讨论】:
如果您想要删除或修改推送的修订,那么恐怕 Mercurial(按设计)不支持这一点。 (您可以将修订的阶段更改为“草稿”并删除或修改它,但是当您再次拉出时,旧修订将重新出现。)
如果您确实需要删除修订版(例如,它包含一些大文件),那么您在本地存储库中无能为力;唯一可以做到这一点的方法是在远程存储库上(例如,让管理员直接在远程存储库上运行hg strip,或类似的方式;BitBucket 接口确实支持剥离修订)。
我们在工作中也遇到过类似的问题,有些用户向存储库提交了非常大的文件,之后在存储库上做了很多工作。我们解决它的唯一方法是使用“转换”扩展来删除文件,然后推送到一个全新的存储库。 (如果我们只是将转换后的存储库推送到现有存储库,这只会从提交错误文件的位置开始创建重复的修订。)
【讨论】: