代码之家  ›  专栏  ›  技术社区  ›  KCL

将对工作区的更改与未提交的更改合并

  •  1
  • KCL  · 技术社区  · 14 年前

    我们最近刚刚从SVN切换到Mercurial,但是现在我们的工作流程遇到了问题。例子: 我有我工作的存储库的本地克隆。我正在对我们的代码库进行一些高度实验性的更改,在我确定它按预期的方式工作之前,我不想提交这些更改,甚至不想在本地提交。同时,我的同事也做了一些我需要的重大改进/错误修复。他把他的承诺推到我们的主仓库。问题是,既然我需要他的更改来测试我自己的代码,我如何将他的更改合并到我的工作区而不需要提交所有的更改?

    4 回复  |  直到 14 年前
        1
  •  1
  •   Lasse V. Karlsen    14 年前

    正如您所发现的,有两种操作可以将一个人的更改提供给另一个人(或者任何一方的许多人)

    在您的情况下,您的同事已经将其更改推到了我认为是您的存储库中心主控的位置。

    在他完成这项工作之后,您可以将最新的更改下拉到存储库中,并将它们合并到分支中。这将把你的同事所做的任何错误修复或更改合并到你的实验代码中。

    所以,只要你远离“推”命令,你就安全了。

    当然,这也假设没有人直接从您的存储库克隆中提取数据,如果他们这样做了,那么他们当然会得到您的实验性更改,但听起来您并不是这样设置的(这也不太可能)

    对于配置文件,典型的方法是只将主文件模板提交到存储库中,使用不同的名称(即额外的扩展名.template或类似名称),然后将实际配置文件的名称放入忽略筛选器中。

        2
  •  3
  •   minaz    12 年前

    如果不想克隆,可以按以下方法进行。

    hg diff > mylocalchanges.txt
    hg revert -a
    # Do your merge here, once you are done, import back your local mods
    hg import --no-commit mylocalchanges.txt
    
        3
  •  1
  •   VonC    14 年前

    关于你的实验性改变,你应该承诺。经常。 You only pull to merge 你需要从其他回购中得到的任何更新。

    至于配置文件,不要提交它们。

    这样,开发人员只会用自己的私有值修改“私有”(即未提交)配置文件。

        4
  •  1
  •   andrew pate    10 年前

    如果您知道未提交的更改不会与正在创建的合并提交冲突,那么您可以执行以下操作。。。

    1) 搁置未提交的更改

    2) 做拉合并

    3) 取消搁置未提交的更改

    Shelf有效地将未提交的更改存储为diff(相对于上一次提交),然后在本地工作区中回滚这些文件。然后取消搁置然后应用这个差异,带回您未提交的更改。

    像乌龟这样的工具都内置了架子。