假设我有以下场景:我克隆了一些开源项目,例如从 URL X 克隆的项目。现在我有了它的本地克隆。我对本地克隆进行了一些更改以尝试并在本地提交它们。现在我想要的是以下内容:
我想从开源项目 X 获取更新。只需获取其所有最新代码,无需我进行任何更改。但我希望我的更改能够保存在历史记录中的某个位置,以便我以后可以获取它们。我不想为此单独克隆,希望将其全部放在我的一个存储库中。
现在我做了以下事情:
- 标记我的更改
hg tag
- 从 URL X 提取并合并最新代码
- 将存储库恢复到 URL X 的最新版本
但我觉得这不是一个好办法,而且是迂回的。我认为还有更好的办法。你能建议一下吗?
我会使用而不是标签bookmark http://mercurial.selenic.com/wiki/BookmarksExtension。如果您使用 Mercurial 1.8 或更高版本,则已经内置了书签功能。否则,您首先需要通过将以下内容放入您的~/.hgrc
file:
[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 的提示。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)