version-control - 私有(private)变更的用例

标签 version-control mercurial branch

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

我想从开源项目 X 获取更新。只需获取其所有最新代码,无需我进行任何更改。但我希望我的更改能够保存在历史记录中的某个位置,以便我以后可以获取它们。我不想为此单独克隆,希望将所有内容都放在我的一个存储库中。

现在我做了以下事情:

  1. 使用 hg 标签标记我的更改
  2. 从 URL X 提取并 merge 最新代码
  3. 将存储库恢复为 URL X 的最新版本

但我觉得这不是好方法,而且是迂回的。我认为还有更好的办法。您能推荐一下吗?

最佳答案

我会使用 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

返回到已添加书签的变更集。

当上游存储库中发生更改时,您可以将它们拉取并 merge 到您自己的分支中:

hg update mywork # if necessary
hg pull
hg merge
hg commit -m 'Merged new upstream changes.'    

书签将向前移动,现在指向您刚刚创建的 merge 变更集。如果你想更新到X中的版本,那么

hg update --rev -2

将在您引入更改后执行此操作 - 这将更新到 merge 之前的旧提示更改集,即 X 的提示。

关于version-control - 私有(private)变更的用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3163591/

相关文章:

git - 如何将bugfix分支 merge 到Master分支?

msbuild - Mercurial/Kiln + MSBuild + MSTest 的持续集成建议

python - hg 使用 fabric 从 bitbucket 中拉出

mercurial - 是否可以将 Mercurial 中的特定目录更新为旧版本?

Git - 清理旧分支

git - "git pull"如何从master进入开发分支

c# - 连接到 git 的 .NET 的项目结构和构建系统

C#:定期检查文件夹的变化?

git - 在 Git-Flow 中一次测试多个功能

git shallow clone (clone --depth) 遗漏远程分支