是否可以使用hg-git删除远程分支?
我可以在本地删除标记(hg bm -d old-branch
),但不清楚如何告诉git服务器也这样做。
2012年9月13日,Hg-Git邮件列表中讨论了这一点。结论是,Hg Git目前不支持删除远程Git分支,解决方法是使用单独的Git客户端来删除远程分支。
我一直致力于改进Hg Git与书签的集成,因此这种功能可能会出现在Hg Git的未来版本中。
相关讨论:https://groups.google.com/d/topic/hg-git/Zj_-JkYsFaA/discussion
这是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
遥控器的url;如果您需要其他遥控器,请根据需要进行更改。
hg paths default
# git+ssh://git@example.com:some_user/some_repo.git
回购根是什么?
hg root
# /home/You/current_repo
更改到回购根下的Git目录
cd /home/You/current_repo/.hg/git
说出让Git删除远程分支的神奇单词,传递Git期望风格的远程回购URL
git push git@example.com:some_user/some_repo.git :branch-to-delete
还要删除远程跟踪分支,因为Git不会自动删除它。Hg Git会根据远程跟踪引用动态生成远程ref标记,因此删除Git中的远程跟踪分支是必要的,并且足以使其不再在Mercurial中看到该标记。
git branch -rd default/branch-to-delete
最后,删除Git的本地分支:
git branch -d $branch