当前分支及其追踪分支的任何Git快捷方式?

6
我希望能做类似以下这样的事情:
$ git fetch origin
$ git rebase -i origin/a_very_very_very_long_branch_name

我的本地分支名与a_very_very_very_long_branch_name相同。

因此,当我执行此类命令时,我不想一遍又一遍地复制和粘贴长分支名称。

Git中是否有当前分支名称的快捷方式?


如果您按Tab键,它应自动完成您的分支名称。 - wakooka
@jerome.s 是的,但是我或者说项目有太多分支了(我知道这不好,但是这就是生活;( )。所以我仍在寻找“捷径”。 - Ya Zhuang
你可能想尝试一下git-completion https://github.com/git/git/blob/master/contrib/completion/git-completion.bash - Sébastien Dawans
@SébastienDawans https://dev59.com/XnHYa4cB1Zd3GeqPO7kG?noredirect=1#comment23459292_16370845 - Ya Zhuang
1
我认为你正在寻找HEAD。请参考https://dev59.com/zHE95IYBdhLWcg3wdtmj#2304106。 - Kyle Strand
@jerome.s 自从我在 emacs 中启动了 sh.exe --login -i(Windows),因此不能将 tab 键视为理所当然的选项。 - Bleeding Fingers
3个回答

4
在您的具体示例中,如果您的分支正在跟踪远程分支,则可以执行以下操作:
git fetch
git rebase -i

不带参数。

如果您的分支没有跟踪远程分支,可以通过执行以下操作来设置:

git branch -u origin/a_very_very_very_long_branch_name

虽然在提供的示例中可用,但它并不完全是所要求的“当前分支名称”的快捷方式。(我意识到 TO 有一个 X/Y 问题,因为她/他实际上想知道上游 / 远程分支的名称。但我会忽略这一点,因为文本很清晰,而且问题很旧。) - try-catch-finally

4
如果您的分支已经设置为跟踪相同名称的远程分支 origin,您可以使用 @{u} 命令,如 gitrevisions 文档所述:

<branchname>@{upstream},例如master@{upstream}@{u}

将后缀 @{upstream} 添加到分支名(简写形式为 <branchname>@{u} )中,表示该分支构建在指定分支之上。如果没有指定分支名称,则默认使用当前分支。


现在我可以使用 git difftool @{u} 命令来比较当前分支和远程分支的差异。 - hIpPy

2

您可以创建一个别名来重定向到origin/current-branch进行rebase操作;

git fetch; git rebase -i origin/$(git rev-parse --abbrev-ref HEAD)

或者,如果您不需要交互式的rebase部分;

git pull --rebase


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接