Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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存储库转换为git存储库?_Git_Version Control_Mercurial_Atlassian Sourcetree_Hg Git - Fatal编程技术网

如何在不丢失分支的情况下将mercurial存储库转换为git存储库?

如何在不丢失分支的情况下将mercurial存储库转换为git存储库?,git,version-control,mercurial,atlassian-sourcetree,hg-git,Git,Version Control,Mercurial,Atlassian Sourcetree,Hg Git,我想将mercurial回购转换为git回购。实际上我看到了,但我没有看到树枝。转换回购协议后,我只能看到一个分支(作为主分支),我看不到任何其他分支,但我可以看到历史(所有更改)是正确的。单击任何提交时,我可以看到如下信息: Date: 19 Nisan 2019 Cuma 15:14:37 Committer: sevgi.cakmak Change dialog header --HG-- branch : sevgi-2.0.0 但是我在左侧看不到sevgi-2.0.0分支(我

我想将mercurial回购转换为git回购。实际上我看到了,但我没有看到树枝。转换回购协议后,我只能看到一个分支(作为主分支),我看不到任何其他分支,但我可以看到历史(所有更改)是正确的。单击任何提交时,我可以看到如下信息:

Date: 19 Nisan 2019 Cuma 15:14:37
Committer: sevgi.cakmak
Change dialog header

--HG--
branch : sevgi-2.0.0   
但是我在左侧看不到sevgi-2.0.0分支(我使用的是sourcetree)

我的步骤:

mercurial.ini文件:

[extensions]
strip = 
histedit = 
rebase = 
hggit = C:\Users\sevgi.cakmak\Desktop\hg-git\hggit
hgext.bookmarks =

[git]
intree = True
hg bookmark-r2.0.0主控
(也尝试过这样做:
hg bookmark-r默认主控
) 然后我在cmd上写了这句话

hg gexport --debug //this line converting all revision
在这行工作之后,我的输出如下:

converting revision a318482e0769e2fceb13a1545cb477d60a00b434
converting revision e444655d161131f9ed1676f6c175813097fd18g8
converting revision 0ab06d22eaf4ff4ecb96caba343fdcc3a85e367k
converting revision 8a4e7f4defb0b04e76e67a825bedf746fe4f3fc5  ......etc
然后我做了这行
git-config--bool-core.bare-false
。 毕竟我打开了.git下的Branchs文件夹,这个旧文件夹是空的。我想在回购协议上看到分支机构

参考:

我还尝试了快速导出,但没有成功。

来自:

HGGit将书签作为分支推送到Git服务器,并将 向下拉Git分支并将它们设置为书签

git.branch_bookmark_suffix
配置

git.branch_bookmark_suffix
hg git不会在Mercurial命名的分支和git之间转换 这两个分支在概念上是不同的;相反,它使用 Mercurial书签表示git分支的概念。 因此,在将hg回购转换为git时,您通常需要 创建书签以镜像所需的所有命名分支 要看到转移到git。主要的警告是你 您的书签不能使用与命名分支相同的名称, 此外,没有可行的方法来重命名中的分支 反复无常

对于希望将hg回购转让给 并维护与hg上相同的命名分支 另一方面,
branch\u bookmark\u后缀
可能就是所需的全部。这 显示将在每个书签上识别的字符串“后缀” 名称,并在书签转换为git分支时剥离:

[git]
branch_bookmark_suffix=_bookmark
如上所述,如果hg回购有一个名为
release_6_maintenance
,然后您可以将其链接到一个名为
发布维护书签
。hg-git然后将剥离
\u书签
从该书签名称中添加后缀,并创建git分支 调用
release\u 6\u maintenance
。从git向后拉到hg时
\u bookmark
后缀随后应用回,当且仅当一个名为 存在该名称的分支。例如,当系统发生变化时
release\u 6\u maintenance
分支已签入git,这些将 放在hg上的
release\u 6\u maintenance\u书签中。但是
如果一个名为
release\u 7\u maintenance
的新分支被拉到hg, 而且还没有一个
版本7\u维护
命名的分支 书签将命名为
release\u 7\u maintenance
,不使用 后缀

branch\u bookmark\u suffix
选项与authors选项一样, 用于迁移遗留hg命名分支。展望未来,一个hg 与git回购链接的回购只能使用书签 用于命名分支


@eagle很高兴它能帮上忙。@eagle@DavelnCaz您能分享一下您使用的hg和hggit版本以及这个解决方案在哪里工作吗?我正在使用
分支\u书签\u后缀
,但在推(转换)到git@Jan对不起,我想不起来了,那是几年前我上次用的。不过,它似乎确实起了作用。@DaveInCaz没问题。我最终使用了github导入功能——在从mercurialSo导入期间可以处理所有(包括未合并的)分支,那么,我需要在mercurial中为我的每个分支创建一个书签吗?