在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
是否有任何配置可以使此快捷方式按预期工作?
答案 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
分支时对分支进行重组。
这不是捷径,因为我需要不断切换跟踪分支 那就是:
- 这个分支不会永久跟踪那个远程分支,我将在不同的时间从不同的分支合并。
- 此外,这个分支实际上已经跟踪了一个远程分支,我想这样做
关于快捷方式,为了引用当前分支,您可以从“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
来完成此操作。