【问题标题】:get current branch name for use in git command获取当前分支名称以在 git 命令中使用
【发布时间】:2013-10-20 07:08:00
【问题描述】:

我有时想在 git 命令中使用当前分支名称。例如

git push origin feature/really-long-branch-name

是否有 git 命令只给出分支名称,以便我可以执行以下操作?

git push origin current_branch

git rev-parse --abbrev-ref HEAD,但这在这种情况下非常有用。设置默认分支也不是很有帮助,因为分支名称经常更改。更改git push 的默认行为也不是我想要的,因为这仍然意味着我第一次push 时必须输入完整的分支名称。

编辑:

版主,这个问题不是骗人的,所以请不要因此而关闭。请仔细阅读我的问题的粗体部分。

【问题讨论】:

标签: git


【解决方案1】:

自 2019 年 6 月起,使用内置 --show-current 标志

虽然 2013 年的这个答案经受住了时间的考验,但 Git 在 2019 年学习了一个新的 git-branch 标志,这使得这变得更加容易。在提交 3710f60a80 中,git-branch 学习了一个新标志来显示当前分支,而无需用户自己解析分支列表或引用。你可以像这样调用它:

$ git branch --show-current
main

以下其他方法继续有效,但现在这应该是 Git 发布版本 >= v2.22.0 的首选解决方案。

读取 HEAD 的符号引用

有多种方法可以获取当前分支的名称。最规范的是使用git-symbolic-ref(1) 读取 HEAD 的符号引用。例如,假设你在 master 分支上:

$ git symbolic-ref HEAD | sed 's!refs\/heads\/!!'
master

使用参考

无论您如何解析它,您都可以通过调用 shell 的 command substitution 在另一个命令中使用符号名称。例如,在 Bash 中:

$ git log -n1 $(git rev-parse --abbrev-ref HEAD)

如果您愿意,没有理由不能将此技巧与 push 或其他命令一起使用。

推送.默认

如果您只对将当前分支推送到同名的远程分支感兴趣,并且由于其他原因不解析 refs,那么您最好使用 Git 的 push.default 选项描述了herehere。例如:

git config push.default current

【讨论】:

  • 感谢您的回答。但git rev-parse --abbrev-ref HEAD 似乎更直接。
  • 感谢您的更新。我认为 git 不会做我想做的事。所以看起来我需要编写一个别名来处理我的用例。
【解决方案2】:

使用 HEAD

在 git push 的情况下,您可以使用 HEAD。

documentation 状态

git push origin HEAD

一种将当前分支推送到远程同名的便捷方法。

创建别名

对于不能使用 HEAD 的情况,我会为它创建一个别名。我只熟悉 mac 环境,这个解决方案是针对那个平台的,但我相信在 Windows 上也有同样的方法。

在你的 ~/.bash_profile 中创建这个别名

alias current_branch="git rev-parse --abbrev-ref HEAD"

然后你可以在你的 git 命令中使用它

git push origin `current_branch`

【讨论】:

    猜你喜欢
    • 2017-08-11
    • 2022-12-03
    • 2011-09-08
    • 2013-09-10
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2022-06-16
    相关资源
    最近更新 更多