Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial 从一个远程分支克隆的repo需要提交到另一个远程分支_Mercurial - Fatal编程技术网

Mercurial 从一个远程分支克隆的repo需要提交到另一个远程分支

Mercurial 从一个远程分支克隆的repo需要提交到另一个远程分支,mercurial,Mercurial,我们有一个位于单独服务器上的主存储库。我最初克隆了默认分支,并在本地进行了更改。我已经在本地提交了这些更改。但是,在主存储库上创建了一个分支,我希望将更改推送到该分支。下面是我试图实现这一目标的描述 我克隆了这根树枝。我正在尝试从本地默认值导出更改,如下所示: C:\hg\default>hg export -g -o mypatch -r tip 当尝试将它们导入到新分支的克隆中时,我得到以下结果: C:\hg\newBranch>hg import C:\hg\default\

我们有一个位于单独服务器上的主存储库。我最初克隆了默认分支,并在本地进行了更改。我已经在本地提交了这些更改。但是,在主存储库上创建了一个分支,我希望将更改推送到该分支。下面是我试图实现这一目标的描述

我克隆了这根树枝。我正在尝试从本地默认值导出更改,如下所示:

C:\hg\default>hg export -g -o mypatch -r tip
当尝试将它们导入到新分支的克隆中时,我得到以下结果:

C:\hg\newBranch>hg import C:\hg\default\mypatch
applying C:\hg\Fill1\mypatch
patching file .hgignore
Hunk #1 FAILED at 11
1 out of 1 hunks FAILED -- saving rejects to file .hgignore.rej
abort: patch failed to apply
我可以手动修复.hgingore.rej文件。问题是修补程序还包含已移动的文件。当运行
hg status
时,我得到的不是显示为已移动的文件,而是以下内容:

C:\hg\newBranch>hg status -C
M someOtherFilesThatLookAsExpected.txt
! originalLocaion\fileA.txt
? newLocation\fileA.txt

此缺失和新状态适用于包含应用修补程序的提交中移动的所有文件。我做错什么了吗?应用修补程序时,我是否总是必须手动移动文件?有没有更简单的方法来完成这个分支转移?

如果不了解更多关于存储库结构的信息,回答这个问题有点困难,但下面是我在不了解更多信息的情况下如何进行的。我假设冲突的原因是存储库的同一分支中存在冲突的更改

首先,获取newBranch存储库的内容:

cd c:\hg\default
hg pull c:\hg\newBranch
然后,在顶部合并或重新设置更改的基础。如果您在同一个分支上工作,那么只需使用

hg pull --rebase c:\hg\newBranch
代替常规拉动(假设已启用重定基址)。否则,对需要协调的两个头部进行显式合并或重基。最后,要做:

hg push -r tip c:\hg\newBranch
为了让您的(现在已协调)更改回到newBranch


除非您有非常特殊的需求,
push
pull
应该是同步存储库或其中一部分的正常方式(请注意,使用-r只会推/拉相应的分支)。导出/导入是相当低级的机制,可能无法为您提供处理重命名、三方合并逻辑、,等等。

当我运行
hg help pull
时,我看不到
--rebase
当你说
hg pull c:\hg\newBranch
我应该做什么
c:\hg\default>hg pull c:\hg\newBranch
时,只有打开rebase扩展(默认情况下它不能启用,因为它可以修改历史记录)。如果你不习惯改写历史,你可能想要也可能不想要。是的,在拉取之前将cd放入c:\hg\default目录。