22

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

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

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

git push origin current_branch

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

编辑:

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

4

2 回答 2

20

自 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 的命令替换在另一个命令中使用符号名称。例如,在 Bash 中:

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

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

Push.Default

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

git config push.default current
于 2013-10-14T00:18:39.663 回答
3

使用 HEAD

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

文件指出

git push 原点 HEAD

将当前分支推送到遥控器上的相同名称的便捷方法。

创建别名

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

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

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

然后,您可以通过执行在您的 git 命令中使用它

git push origin `current_branch`
于 2017-11-03T12:22:48.183 回答