如何设置当前分支(dev)以仅使用git push推送到refs / remotes / test?

时间:2017-07-17 12:54:32

标签: git git-remote

我已将当前分支select acc, start_dat, end_dat, end_dat - start_dat as duration_day from ( select acc, min(start_dat) as start_dat, max(end_dat) as end_dat, row_number() over (partition by acc order by grp desc) as rn from ( select acc, start_dat, end_dat, n_type, row_number() over (partition by acc order by start_dat) - row_number() over (partition by acc, n_type order by start_dat) as grp from inputs ) where n_type != 'ok' group by acc, n_type, grp ) where rn = 1 ; 设置为使用以下dev推送到refs/remotes/test

git push --set-upstream origin dev:test看起来像:

.git/config

但是当我[remote "origin"] url = https://appulocal@bitbucket.org/appulocal/test_st.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "dev"] remote = origin merge = refs/heads/test 时,它不会从远程本地git push推送到dev。  Git bash显示消息:

test

如何解决此问题,以便只有fatal: The upstream branch of your current branch does not match the name of your current branch. To push to the upstream branch on the remote, use git push origin HEAD:test To push to the branch of the same name on the remote, use git push origin dev To choose either option permanently, see push.default in 'git help config'. 我当前的分支git push推送到远程的dev

1 个答案:

答案 0 :(得分:1)

实际上,您已将dev设置为 refs/remotes/test。这就是分支机构merge选项所支配的内容。这有点令人困惑,因为这是使用push命令设置的;但是一组不同的配置选项决定了推送行为的方式。

问题是,git检查了许多事情以决定如何处理推送,而我们大多数人习惯的行为是默认设置,当它们都没有设置时...... 但是 git并不愿意依赖于默认值,如果分支名称不匹配,因为它认为这可能是您尝试使用的两种不同配置之间的歧义。

在您的情况下,您要为test分支指定推送目标dev。有几种方法可以解决这个问题,但是当你在不同<时,我无法想到任何没有某些副作用的方法。 / em>分支并说git push

假设您只推送到一个遥控器 - 它与您拉出的遥控器相同 - 您可以设置push.default配置值

git config push.default upstream

这将删除&#34;相同的名称&#34;校验。 (请注意,它删除了对所有分支的检查;但只要您打算在pull期间始终推送到您合并的任何分支,这都可以。)官方docs认为这仅适用于单一远程工作流程。

如果您想要更精确地指定推送到哪里的内容,您可能只需要在推送命令行上指定refspec。