Version control 私有变更的用例

Version control 私有变更的用例,version-control,mercurial,branch,Version Control,Mercurial,Branch,假设我有以下场景:我克隆了一些开源项目,比如说从URL X。现在我有了它的本地克隆。我对本地克隆做了一些更改以进行尝试并在本地提交。现在我想要的是: 我想从开源项目X获取更新。只需获取其所有最新代码,而不需要进行任何更改。但我希望我的改变能存在于历史的某个地方,这样我以后就能得到它们。我不想为此而分离克隆,我想在我的一份回购协议中实现这一切 目前,我做了以下工作: 用hg标记标记我的更改 从URL X中提取并合并最新代码 将存储库还原为URL X的最新版本 但我觉得这不是个好办法,而且是迂回的。

假设我有以下场景:我克隆了一些开源项目,比如说从URL X。现在我有了它的本地克隆。我对本地克隆做了一些更改以进行尝试并在本地提交。现在我想要的是:

我想从开源项目X获取更新。只需获取其所有最新代码,而不需要进行任何更改。但我希望我的改变能存在于历史的某个地方,这样我以后就能得到它们。我不想为此而分离克隆,我想在我的一份回购协议中实现这一切

目前,我做了以下工作:

  • hg标记标记我的更改
  • 从URL X中提取并合并最新代码
  • 将存储库还原为URL X的最新版本

  • 但我觉得这不是个好办法,而且是迂回的。我想还有更好的办法。你能建议一下吗?

    我会用标签代替标签。如果您使用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的提示。

    谢谢,但书签只是此处的改进标记,对吗?我是说,也许我要找的是hg更新版——rev?扎哈波波夫:哦,我读了你的“将存储库还原到URL X的最新版本”这意味着
    hg update
    使用最新版本的X。请阅读这两个命令的帮助-简短版本是
    hg update
    更新文件内容并更改工作副本父版本,而
    hg revert
    仅更新文件。