从一个git分支拉出来,推入另一个分支

时间:2017-12-24 17:28:03

标签: git version-control bitbucket-server

我有一个本地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 <--------/ ,这个解决方案对我来说相当不方便。但是,如果没有其他想法,我会满足于此。

1 个答案:

答案 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