如何编写可同时适配main与master分支的Git别名?
Git自动识别master/main分支的别名配置方案
方案1:本地分支存在性检测(适配本地仅存在master/main其中一个的场景)
该方案逻辑简单直接,优先检测本地是否有master分支,存在则使用,否则默认使用main分支,完全匹配你给出的前置假设。
直接添加如下别名即可:
grm对应配置:grm = !git rebase $(git show-ref --verify --quiet refs/heads/master && echo master || echo main)grim对应配置:grim = !git rebase -i $(git show-ref --verify --quiet refs/heads/master && echo master || echo main)
如果你习惯用命令行直接配置全局别名,执行以下两条命令即可:
git config --global alias.grm '!git rebase $(git show-ref --verify --quiet refs/heads/master && echo master || echo main)' git config --global alias.grim '!git rebase -i $(git show-ref --verify --quiet refs/heads/master && echo master || echo main)'
方案2:读取远端默认分支(更通用,无本地分支数量限制)
如果需要适配更复杂的场景,比如本地同时存在master和main分支、或者仓库默认分支使用其他自定义名称,可以直接读取远端origin的默认分支配置,匹配性更强。
别名配置如下:
grm对应配置:grm = !git rebase $(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')grim对应配置:grim = !git rebase -i $(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')
命令行配置方式:
git config --global alias.grm '!git rebase $(git symbolic-ref refs/remotes/origin/HEAD | sed "s@^refs/remotes/origin/@@")' git config --global alias.grim '!git rebase -i $(git symbolic-ref refs/remotes/origin/HEAD | sed "s@^refs/remotes/origin/@@")'
如果你的仓库常用远端别名不是origin,把命令中的origin替换为对应远端别名即可。
内容的提问来源于stack exchange,提问作者Brondahl
相关产品推荐
相关产品推荐

