gpt4 book ai didi

eclipse - 如何在本地 Mercurial 存储库中保留未提交的更改,同时仍然推/拉?

转载 作者:行者123 更新时间:2023-12-02 06:03:29 28 4
gpt4 key购买 nike

如果我正在处理一些我不想提交的文件,我只需保存它们。然后我有其他文件想要推送到服务器,但是如果其他人对存储库进行了更改,并且我将它们拉下来,它会要求我 merge 或 rebase ..但是这些选项中的任何一个都会导致我丢失我尚未提交的本地更改。

其他人正在做什么来解决这个问题?我发现搁架扩展的文档很难让我理解。

注意:我使用 Mercurial Eclipse 将文件推送到服务器或从服务器拉取文件。

对此的任何解释将不胜感激!谢谢!

<小时/>

示例:

我正在 Mercurial Eclipse 中开发我的网站。我有一个新文件夹和新文件,但我不想将它们提交到服务器。我还修改了一些现有文件,但我不想让这些更改生效。

然后我网站上的某些内容损坏了,我需要修复它,如果不重新设置基础或与存储库的最新提示 merge ,它不会让我修复它,这将导致我丢失所有未提交的更改。

如果我不想丢失新文件夹和已编辑的文件,应该如何处理它们?重新克隆似乎很乏味。将文件复制到新文件夹似乎也很乏味。我确信 Shelving 或 MQ 会做我想做的事,只是我还不知道如何去做。

最佳答案

根据您的示例情况,我会这样做(遵循 Ry4an 的策略,仅提交您当前正在处理的事情,但不想发布):

假设您开始在这样的存储库中工作:

$ hg status -A
C f1
C f2
$ hg glog
@ changeset: 1:7f3c6c86a92f
| tag: tip
| summary: add f2
|
o changeset: 0:03ca1e6d5b86
summary: initial

即有 2 个文件和 2 个提交/变更集。您做了一些工作,比如说添加一个新功能,然后您的工作副本可能如下所示:

$ hg status
M f2
? f3
? f4

有 2 个新文件和 1 个修改文件。现在您必须修复一个错误,为此您还需要在远程存储库中进行任何新的更改。通过提交当前工作并拉取远程更改来生成当前工作的快照(按什么顺序执行此操作并不重要,默认情况下拉取不会影响工作副本的状态):

$ hg commit -A -m "snapshot feature work"
$ hg pull

这可能会产生如下历史记录:

o  changeset:   3:2284ba62de07            <-- just pulled in
| tag: tip
| parent: 1:7f3c6c86a92f
| summary: edit f1
|
| @ changeset: 2:4a19d371a04f <-- your interrupted work
|/ summary: snapshot feature work
|
o changeset: 1:7f3c6c86a92f
| summary: add f2
|
o changeset: 0:03ca1e6d5b86
summary: initial

现在您可以更新/ checkout 修订版 3 并开始修复错误:

$ hg update 3
.. fix the bug ..
$ hg commit -m "fix a bug"
$ hg glog --limit 3
@ changeset: 4:5d3d947fb4af
| tag: tip
| summary: fix a bug
|
o changeset: 3:2284ba62de07
| parent: 1:7f3c6c86a92f
| summary: edit f1
|
| o changeset: 2:4a19d371a04f
|/ summary: snapshot feature work
:

看起来不错,让我们插入您的修复,即使其生效,同时不发布您的中间工作:

$ hg push -r 4

这会推送导致修订版 4(您的错误修复)的所有更改,但不会推送本地存储库中的其他分支。您还可以使用 -r .,它指的是工作副本的父修订版,即您刚刚提交的修订版。

最后,您可以返回功能工作并继续您的工作:

$ hg update 2
.. work, commit, work, commit ..
.. finally merge with the other branch, e.g. revision 4

这些步骤是在命令行上进行的,但我认为将一般概念适应 Eclipse Mercurial 插件中的相应点击并不难。

一些额外说明:

  • 您可能想要为快照提交添加书签,这样就无需使用修订 ID 或编号。
  • 如果您想稍后在一次提交中发布您的功能作品,请在完成后使用折叠扩展。

关于eclipse - 如何在本地 Mercurial 存储库中保留未提交的更改,同时仍然推/拉?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6392832/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com