相当于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

在不使用"remote"的情况下,下面就是这样做的:

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

这个问题是关于快捷方式的,我想要一个pull命令,它可以像原来的pull命令一样为我进行获取和合并:

git pull mortoray

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

您应该确保您的分支正在跟踪mortoraymortoray-main分支:

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

(详见"如何让现有的git分支跟踪远程分支?")
那么git pull mortoray现在应该在抓取mortoray-main/mortoray分支时重新定位分支。


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

这不是一个快捷方式,因为我需要不断地切换跟踪分支。
即:

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

关于快捷方式,为了引用当前分支,你可以从"git push current branch"中获得灵感,它的想法也适用于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`'

如果你想为上游repo添加参数(即不总是从mortoray-main中提取,并且为特定的本地分支(其名称与上游分支不同)

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

那么gpull mortoray-main mortoray应该获取正确的分支并重新设置当前分支。

OP -qa mort-ora-y提到:

我不想指定本地或远程分支名称——我将总是从名为mortoray-main的分支拉入碰巧是我的本地分支的任何地方。

那么这个别名就可以了:

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

我相信你的问题在这里已经有了答案。你需要在你的.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

编辑:我看到你已经拒绝了这个-我想我知道你想做什么,你可以使用别名…

基本上你要做的就是添加远程分支和你在第一篇文章中的"remote"。在这一点上,你应该能够git fetch,你将在repo中有一个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

为您希望跟踪mortormain分支的每个分支执行此操作,然后一个简单的git pull就可以完成此操作。

最新更新