【问题标题】:Git fast-foward to upstream without checkoutGit快速前进到上游而无需结帐
【发布时间】:2020-03-18 17:58:04
【问题描述】:

我经常使用 git 命令git fetch origin master:master。我想要一个别名,这样我就可以做git ff master。我怎样才能做到这一点?我唯一缺少的是获取远程分支名称。我知道我可以通过git rev-parse --abbrev-ref master@{u} 得到origin/master,但我只需要master

所以我想它会像git fetch $(git config branch.$1.remote) $(???):$1 这样我只需要填写???。然后我可以添加一些错误处理。

相关:

  1. Git pull without checkout?
  2. Merge, update, and pull Git branches without using checkouts

【问题讨论】:

  • Git 产生origin/master(对于master@{u})的方式是通过remote.<remote>.fetch refspec 运行git config --get branch.<branch>.merge 的结果。你想回避那个,所以直接得到branch.<branch>.merge
  • @torek 我需要远程分支名称。 git config --get branch.<branch>.merge 给了我本地分支。
  • 不,这是遥控器上看到的名字。试试看:git rev-parse --abbrev-ref master@{u} 说是 origin/master,所以让我们更改它:git branch --set-upstream-to=origin/maint Branch 'master' set up to track remote branch 'maint' from 'origin'. git config --get branch.master.merge refs/heads/maint(这是 他们的 maint 的完全限定名称,而不是 我的 maint:我什至没有 maint)。
  • @torek 啊,你是对的!我的错。你为什么不发布答案?

标签: git


【解决方案1】:

我有一个工作别名。现在我可以做git ff master。感谢@torek 的提示。

git-ff(我把它和我的 zsh 函数放在一起)

[ -z "$1" ] && { echo 'No branch specified'; return 1 }
local remote src
remote=$(git config branch.$1.remote) || { echo 'No remote'; return 1 }
src=$(git config branch.$1.merge) || { echo 'No merge'; return 1 }
git fetch $remote $src:$1

.gitconfig

ff = !zsh -c \"git-ff $@\"

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 2017-11-11
    • 2012-10-25
    • 2014-12-07
    • 2013-03-05
    • 2017-11-22
    • 1970-01-01
    • 2018-03-25
    • 2012-05-03
    相关资源
    最近更新 更多