我有一个本地BitBucket服务器,我将我的更改从Web UI合并到master中。 我想与永久性的个人分支机构合作,我将定期创建来自的合并请求。
我希望def create
@banner=Banner.new
@banner.large=params[:large]
@banner.update_attributes(banner_params)
@banner.save
redirect_to :back
end
将git pull
合并到我的本地origin/master
,并master
将我的本地主人合并到git push
。然后,我将在服务器上创建合并请求,并将我的更改从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
),然后拉取将从我的个人合并分支也是如此。
有没有办法配置git,以便默认的推拉操作如上所述?
编辑:我发现通过将upstream
设置为push.default
,将本地分支命名为与远程个人分支相同,我可以实现非常相似的功能,并且将current
设置为refs / heads / master。换句话说:
branch.itsadok.merge
这几乎可行,但由于我的脚本假设我的本地分支被称为BitBucket server: origin/itsadok --- via PR --> origin/master
↑ |
Local machine: \---------- itsadok <--------/
,这个解决方案对我来说相当不方便。但是,如果没有其他想法,我会满足于此。
答案 0 :(得分:1)
您可以通过正确映射push refspec来实现所描述的行为。如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与其上游进行比较,因此您将看到&#34; 1提前提交&#34;即使在实际提交后也会发出通知。git push
,而在非主分支上仍然会将数据从master推送到itsadok。如果您想尝试修复此问题,最好的方法可能是refspec configuration examples