[英]pull from one git branch, push into another
我有一个本地 BitBucket 服务器,我将我的更改从 Web UI 合并到主服务器。 我想与一个永久的个人分支合作,我将定期从中创建合并请求。
我希望git pull
将origin/master
合并到我的本地master
,并git push
将我的本地 master 推送到origin/itsadok
。 然后我将在服务器上创建一个合并请求,并将我的更改从origin/itsadok
合并到origin/master
。
BitBucket server: origin/itsadok --- via PR --> origin/master
↑ |
Local machine: \---------- master <---------/
看起来很简单。
我知道我可以手动执行git push origin master:itsadok
,但我希望它是默认值。 似乎设置默认推送目标的唯一方法是将branch.master.merge
配置为refs/heads/itsadok
(并将push.default
配置为upstream
),但是 pull 也会从我的个人分支合并。
有没有办法配置 git 以便默认推送和拉取将按上述方式工作?
编辑:我想到我可以通过将push.default
设置为current
、将本地分支命名为与远程个人分支相同的名称并将branch.itsadok.merge
设置为 refs/heads/master 来实现非常相似的功能。 换句话说:
BitBucket server: origin/itsadok --- via PR --> origin/master
↑ |
Local machine: \---------- itsadok <--------/
这几乎有效,但是因为我的脚本假设我的本地分支称为master
,所以这个解决方案对我来说相当不方便。 不过,如果没有其他想法,我会满足于此。
您可以通过正确映射推送引用规范来实现所描述的行为。 如push manual 中所述,git 按以下顺序查看要推送的内容:
remote.<remote_name>.push
配置如果不为空push.default
配置所以你可以让master
跟踪origin\\master
,所以拉动工作正常,然后配置remote.origin.push
,所以不带参数的推送适合你的工作流程:
git config remote.origin.push refs/heads/master:refs/heads/itsadok
您可以通过打印与上游分支检查配置git rev-parse --symbolic-full-name @{upstream}
与推分支git rev-parse --symbolic-full-name @{push}
但是,有几个警告:
git status
会将 master 与其上游进行比较,因此即使在实际推送提交之后,您也会看到“提前 1 次提交”通知。git push
,而在非 master 分支上仍然会将数据从 master 推送到 itadok。 如果您想尝试修复此问题,最好的开始方法可能是refspec 配置示例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.