git 将 `main` 和 `master` 视为相同的别名

git alias that treats `main` and `master` the same

我有(除其他外)git 别名:

整个开发社区正在放弃对默认分支使用 master,转而使用 main(出于与历史关联有关的原因)

不幸的是,社区并没有统一这样做,而且我经常在项目之间切换,所以我不得不不断编辑我的别名。

有什么方法可以编写别名,以便它与“此存储库中存在的 mastermain 中的任何一个交互”? (很高兴假设这两个中只有一个在本地存在)


回复:建议的答案。 问题不在于"I as a human don't know which is in use in this repo";通过浏览历史来识别这是微不足道的。这是我的*别名*不知道。

我原以为解决方案会以某种方式“尝试两种选择”,但是使用链接问题直接确定正确答案的解决方案然后使用该答案 也可以。

使用 的答案之一写一个别名来查找正确的分支名称,然后在其他别名中使用它:

# ~/.gitconfig
[alias]
    main-branch-name = "!f() { git symbolic-ref refs/remotes/origin/HEAD | sed \"s@^refs/remotes/origin/@@\" ; }; f"
    rm = ! git rebase $(git main-branch-name)

我会这样处理这个问题:

git rev-parse main >/dev/null 2>/dev/null && git rebase main || git rebase master

如果有 main 分支使用它否则尝试 master.

它应该比 git remote show origin.

的使用更不滞后