假设我有以下场景:我克隆了一些开源项目,比如来自URL X.现在我有了它的本地克隆。我对本地克隆进行了一些更改以尝试解决问题并在本地提交它们。现在我想要的是:
我想从开源项目X获得更新。只需获取所有最新代码,而不需要进行任何更改。但我希望我的更改能够在历史记录中的某个位置生存,以便我以后可以使用它们。而且我不想为此分离克隆,希望在我的一个回购中完成所有。
现在我做了以下事情:
hg tag
但是我觉得这不是好方法,而是迂回。我认为有更好的方法。你能建议吗?
答案 0 :(得分:3)
我会使用bookmark而不是标签。如果您使用Mercurial 1.8或更高版本,则您已经内置了书签功能。否则,您首先通过将以下内容放入~/.hgrc
文件中来启用扩展程序:
[extensions]
bookmarks =
[bookmarks]
track.current = True
现在获取项目的克隆:
hg clone http://bitbucket.org/user/X
cd X
然后劈开:
# edit, edit, edit...
hg commit -m 'Great new feature!'
现在为此变更集添加书签
hg bookmark mywork
这就像一个标签,但书签的优点在于您进行新提交时会移动。这就像你正在读书并随身携带书签一样。创建书签后,您可以执行
hg update mywork
返回已添加书签的变更集。
当上游存储库中进行了更改时,您将它们拉入并合并到您自己的分支中:
hg update mywork # if necessary
hg pull
hg merge
hg commit -m 'Merged new upstream changes.'
书签将向前移动,现在指向刚刚创建的合并变更集。如果要更新到X中的版本,那么
hg update --rev -2
在您提交更改后会执行此操作 - 这会更新为合并之前的旧提示更改集,这是X的提示。