拉和推的不同默认远程,同时允许手动指定一个
Different default remote for pull and push, while allowing manually specifying one
我有一个本地 Git 存储库,它有两个遥控器。 origin
是 upstream
的一个分支。我在 master
上工作。我想实现这个:
git pull
等同于 git pull upstream master
git push
等同于 git push origin master
git pull origin master
从 origin
拉取
git push upstream master
推送到 upstream
因此将 origin
与 upstream
同步的工作流程将简化为
git pull # from upstream
git push # to origin
我已经成功地使用一系列 git config
命令的以下结果配置了第一部分:
[branch "master"]
remote = upstream
merge = refs/heads/master
pushRemote = origin
但是,git push
给我这个错误:
fatal: You are pushing to remote 'origin', which is not the upstream of
your current branch 'master', without telling me what to push
to update which remote branch.
有什么想法吗?
虽然不完全符合您的要求,但一个选项是为各种命令定义别名,在您的 .bashrc
文件中:
alias gpull='git pull upstream master'
alias gpush='git push origin master'
然后,就像使用任何普通 UNIX 别名一样使用这些别名。我投票反对尝试更改基本 Git 命令的语义,部分原因是我不知道如何更改,部分原因是它可能会在某些时候导致混淆。
这实际上应该在 Git 版本 >= 2.0 中工作 "out of the box",按照您配置的方式。
显然,根据评论,您还必须将 push.default
显式配置为 simple
,即使这是未配置 push.default
的默认设置。 (将 push.default
设置为 current
也可以,但会删除 simple
为某些推送添加的安全检查。)
请注意,您可以使用 git branch --set-upstream-to
:
设置任何分支的上游
git branch --set-upstream-to=upstream/master master
但它确实需要一个 git config
命令(或直接编辑配置文件——我自己喜欢经常使用 git config --edit
,尤其是修复打字错误)来设置 pushRemote
同样,您需要实现您想要实现的目标。
我有一个本地 Git 存储库,它有两个遥控器。 origin
是 upstream
的一个分支。我在 master
上工作。我想实现这个:
git pull
等同于git pull upstream master
git push
等同于git push origin master
git pull origin master
从origin
拉取
git push upstream master
推送到upstream
因此将 origin
与 upstream
同步的工作流程将简化为
git pull # from upstream
git push # to origin
我已经成功地使用一系列 git config
命令的以下结果配置了第一部分:
[branch "master"]
remote = upstream
merge = refs/heads/master
pushRemote = origin
但是,git push
给我这个错误:
fatal: You are pushing to remote 'origin', which is not the upstream of
your current branch 'master', without telling me what to push
to update which remote branch.
有什么想法吗?
虽然不完全符合您的要求,但一个选项是为各种命令定义别名,在您的 .bashrc
文件中:
alias gpull='git pull upstream master'
alias gpush='git push origin master'
然后,就像使用任何普通 UNIX 别名一样使用这些别名。我投票反对尝试更改基本 Git 命令的语义,部分原因是我不知道如何更改,部分原因是它可能会在某些时候导致混淆。
这实际上应该在 Git 版本 >= 2.0 中工作 "out of the box",按照您配置的方式。
显然,根据评论,您还必须将 push.default
显式配置为 simple
,即使这是未配置 push.default
的默认设置。 (将 push.default
设置为 current
也可以,但会删除 simple
为某些推送添加的安全检查。)
请注意,您可以使用 git branch --set-upstream-to
:
git branch --set-upstream-to=upstream/master master
但它确实需要一个 git config
命令(或直接编辑配置文件——我自己喜欢经常使用 git config --edit
,尤其是修复打字错误)来设置 pushRemote
同样,您需要实现您想要实现的目标。