如何从多个提交中推送多个分支?

Min*_*God 41 git github

gitGitHub发布Windows应用程序之前从未使用过,所以我从未在命令行中使用它.

所以这是我的情况:
我做了一些提交master,然后切换分支并在那里做了一些提交.所有这一切都没有推向GitHub.当我点击syncwindows应用程序(我假设它git push)时,令我惊讶的是,我的所有提交都被推送到我的新分支 - 甚至是我在进行时所做的提交master.

由于这是Windows应用程序的行为,我想我必须使用命令行.将提交推送到远程控制器上的正确分支
的正确git push命令是什么?

ken*_*orb 70

要推送所有分支(refs/heads下的refs),请使用以下命令(origin是您的远程):

git push origin --all
Run Code Online (Sandbox Code Playgroud)

您也push.default可以matching在配置中设置为默认推送两端具有相同名称的所有分支.例如:

git config --global push.default matching
Run Code Online (Sandbox Code Playgroud)

从Git 2.0开始,默认值是simple最安全的选项.

  • 为了澄清上述评论,根据推送的文档:“特殊的 refspec `:` (或 `+:` 以允许非快进更新)指示 Git 推送“匹配”分支:对于本地上存在的每个分支端,如果远程端已存在同名分支,则更新远程端。”。 (2认同)

Zit*_*rax 42

如果要推送多个特定分支(例如branch1和branch2),可以使用:

git push origin branch1 branch2 
Run Code Online (Sandbox Code Playgroud)

在Git> = 2.4中,这个操作可以原子方式完成(即如果它无法推送任何指定的分支,则不会被推送):

git push --atomic origin branch1 branch2 
Run Code Online (Sandbox Code Playgroud)


Eri*_*ric 8

git push origin 默认情况下会从所有跟踪分支推送到远程分支.

git push origin my-new-branch 将推动你的新分支.

我不相信有任何简单或可能的意外做法会将提交从两个不同的分支推送到同一个分支并在远程上进行合并.

我猜这个新分支在它的历史中有来自master的提交.要查看是否为真,请在git log my-new-branch本地运行并查看这些提交是否在您的历史记录中.

如果是这样,当你"切换分支"时,你可能会在新的提交完成之后从master中分支出来,所以新分支拥有历史记录中的所有提交,而不仅仅是该分支所特有的提交.

  • 我认为较新版本的git不会推动所有跟踪分支:http://stackoverflow.com/a/13148313/586086 (3认同)

K-G*_*Gun 5

迟到的答案,但我要分享对我有用的解决方案。

最后我的/foo/.git/config文件看起来像:

[core]
    ...

[remote "dev"]
    url = http://dev.foobar.com/foo.git
    fetch = +refs/heads/*:refs/remotes/dev/*
[remote "pro"]
    url = http://pro.foobar.com/foo.git
    fetch = +refs/heads/*:refs/remotes/pro/*

[remote "all"]
    url = http://dev.foobar.com/foo.git
    url = http://pro.foobar.com/foo.git

[http]
    postBuffer = 524288000
Run Code Online (Sandbox Code Playgroud)

并指挥;

git push all --all
Run Code Online (Sandbox Code Playgroud)

积分:同时推送到多个 Git 存储库