从存储库到当前分支的git pull的等效快捷方式

时间:2011-12-01 07:56:38

标签: git

在git中我使用pull命令从不同的存储库合并,例如:

git pull ../mortoray-main/ mortoray-main

这将从另一个存储库中获取并合并mortoray-main分支到当前存储库中的当前分支。

我正在寻找的是如何设置我可以这样做的等效快捷方式:

git pull mortoray

在我的gitconfig中我添加了这个:

[remote "mortoray"]
    url = ../mortoray-main/
    fetch = mortoray-main

问题是,当我运行git pull mortoray时,我收到错误消息:“您要求从远程'mortoray'拉出,但没有指定 分店。因为这不是默认配置的远程 对于当前分支,必须在命令行中指定分支。“

如何配置遥控器以使快捷方式作为原始拉取命令工作?


请注意,以下是“git pull mortoray”,而不是捷径:

git fetch mortoray
git merge FETCH_HEAD

如果不使用“远程”,这正是以下所做的:

git pull ../mortoray-main/ mortoray-main

所以问题是关于快捷方式,我想要一个pull命令,它为我执行fetch和merge,就像原始的pull命令一样:

git pull mortoray

是否有任何配置可以使此快捷方式按预期工作?

3 个答案:

答案 0 :(得分:3)

您应该确保您的分支机构正在跟踪mortoray-main回购的mortoray分支:

git branch --set-upstream <your_current_branch> mortoray-main/mortoray

(详见“How do you make an existing git branch track a remote branch?”)
然后git pull mortoray现在应该在获取mortoray-main/mortoray分支时对分支进行重组。


OP eda-qa-mort-ora-y添加:

  

这不是捷径,因为我需要不断切换跟踪分支   那就是:

     
      
  • 这个分支不会永久跟踪那个远程分支,我将在不同的时间从不同的分支合并。
  •   
  • 此外,这个分支实际上已经跟踪了一个远程分支,我想这样做
  •   

关于快捷方式,为了引用当前分支,您可以从“git push current branch”中获取灵感,其中idea also valid for a git pull已在.bashrc中声明:

get_git_branch() {
  echo `git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
}
alias gpull='git pull mortoray-main `get_git_branch`'

如果你想为上游回购添加参数(即不是总是从mortoray-main拉出,而是为了一个名称与上游分支不同的特定本地分支)

alias gpull='git pull ${1:-origin} $2:`get_git_branch`'

然后gpull mortoray-main mortoray应该获取正确的分支并重新绑定当前分支。

OP edA-qa mort-ora-y mentions

  

我不想指定本地或远程分支名称 - 我将始终从名为mortoray-main的分支拉到任何恰好是我的本地分支。

所以这个别名应该适用:

gpull='git pull mortoray mortoray:`get_git_branch\`'

答案 1 :(得分:0)

我相信您的问题已经得到解答here。您需要.git/config

[branch 'mortoray-main']
    remote = mortoray                 # set mortoray as default remote for this branch
    merge  = refs/heads/mortoray-main # set mortoray-main as default remote branch to merge

答案 2 :(得分:0)

编辑:我发现你已经拒绝了 - 我想我知道你要做什么,你可以使用别名...

基本上你要做的就是用第一篇文章中的'remote'添加那个远程分支。此时您应该能够git fetch并且您将在回购中拥有mortoray/mortoray-main分支(这是远程分支)。

从这里开始的过程是git fetch && git merge,同时坐在您要将其合并到的分支上。这可以在.git / config或〜/ .gitconfig文件中变为别名。应该是这样的(在两个命令之前你可能需要或不需要git部分):

alias pullmortoray = git pull && git merge

然后键入(使用tabcompletion)git pullmortoray,然后瞧!

低于以下!!!对于后代,如果有人已经评论过。

你的问题实际上差不多 - 遥控器是正确的,你只需要设置你的本地分支来跟踪../mortoray/mortoray-main分支。

git branch --set-upstream <current-branch> mortoray/mortoray-main

为您希望跟踪mortoray-main分支的每个分支执行此操作,然后使用简单的git pull来完成此操作。