11

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

我可以在本地删除标签(hg bm -d old-branch),但如何告诉 git 服务器也这样做并不明显。

4

2 回答 2

6

这在2012 年 9 月 13 日的 Hg-Git 邮件列表中进行了讨论。结论是删除远程 Git 分支不是 Hg-Git 目前支持的,解决方法是使用单独的 Git 客户端删除远程分支.

我一直在努力改进 Hg-Git 与书签的集成,因此该功能可能会出现在 Hg-Git 的未来版本中。

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

于 2012-11-23T01:58:15.310 回答
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 根目录下的 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 从远程跟踪引用动态生成 remote-ref 标签,因此删除 Git 中的远程跟踪分支是必要且足够的,以不再在 Mercurial 中看到标签。

git branch -rd default/branch-to-delete

最后,删除 Git 的(本地引用)本地分支:

git branch -d $branch
于 2016-03-15T15:06:21.657 回答