hg-git:删除远程分支?

时间:2012-03-20 18:36:27

标签: git mercurial hg-git

是否可以使用hg-git删除远程分支?

我可以在本地删除标记(hg bm -d old-branch),但是如何告诉git服务器执行相同操作并不明显。

2 个答案:

答案 0 :(得分:6)

2012年9月13日这是discussed on the Hg-Git mailing list。结论是删除远程Git分支不是Hg-Git目前支持的,解决方法是使用单独的Git客户端删除远程分支

我一直致力于改进Hg-Git与书签的集成,因此未来版本的Hg-Git可能会出现这种功能。

相关讨论: https://groups.google.com/d/topic/hg-git/Zj_-JkYsFaA/discussion

答案 1 :(得分:3)

这里是你的hgrc

的别名

如果您使用的是Posix系统,请将此别名添加到hgrc文件中:

# Example invocation:
#    hg git-delete-remote default/bad-branch
gitremotedelete = ! \
    remote=`echo $HG_ARGS | sed 's_/.*__' | sed 's_.* __'`;
    branch=`echo $HG_ARGS | sed 's_.*/__'`;
    remote_url=$($HG paths $remote | sed 's_^git+ssh://__');
    git_dir=$($HG root)/.hg/git;
    # Delete the remote branch
    git --git-dir=$git_dir push $remote_url :$branch;
    # Delete local ref to remote branch
    git --git-dir=$git_dir branch -rd $remote/$branch;
    # Delete local branch
    git --git-dir=$git_dir branch -D $branch
    echo "Don't forget to run "'`'"hg bookmark -d $branch"'`'

并且如果你想要删除'默认/坏分支'那么就这样调用它。远程:

# hg gitremotedelete <name of remote>/<branch to delete>
hg gitremotedelete default/bad-branch

手动执行

如果你想知道上面做了什么:这里我们如何做与交互式会话相同的事情。希望这可以转换为Windows。

我们想删除某些遥控器上的Git分支。让我们找出default遥控器的网址;如果您需要其他遥控器,请根据需要进行更改。

hg paths default
# git+ssh://git@example.com:some_user/some_repo.git

什么是回购根?

hg root
# /home/You/current_repo

切换到repo root下的Git目录

cd /home/You/current_repo/.hg/git

说出让Git删除远程分支的魔术词,传递 Git期望的样式中的远程repo URL

git push git@example.com:some_user/some_repo.git :branch-to-delete

同时删除远程跟踪分支,因为Git不会自动删除它。 Hg-Git从远程跟踪引用动态生成远程引用标记,因此删除Git中的远程跟踪分支是必要的,足以不再在Mercurial中看到标记。

git branch -rd default/branch-to-delete

最后,删除Git&#39; s(本地参考)本地分支:

git branch -d $branch