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

jgzswidk  于 2023-04-28  发布在  Git
关注(0)|答案(6)|浏览(285)

GitHub发布Windows应用程序之前,我从未使用过git,所以我从未在命令行中使用过它。
我的情况是这样的
我在master上做了一些提交,然后切换分支,在那里也做了一些提交。所有这些都不需要推送到GitHub。当我在windows应用程序中点击sync时(我假设是git push),令我惊讶的是,我所有的提交都被推送到了我的新分支-甚至是我在master中所做的提交。
由于这是windows应用程序的行为,我想我必须使用命令行。
什么是正确的git push命令来将提交推送到远程上的正确分支?

mnemlml8

mnemlml81#

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

git push origin --all

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

git config --global push.default matching

从Git 20,默认值为simple,这是最安全的选项。

mftmpeh8

mftmpeh82#

如果你想推送几个特定的分支(例如branch1和branch2),你可以用途:

git push origin branch1 branch2

在Git中〉= 2。4该操作可以原子地完成(即,即,如果它未能推送指定的任何分支,则将不推送任何东西):

git push --atomic origin branch1 branch2
5tmbdcev

5tmbdcev3#

默认情况下,git push origin将从所有跟踪分支向上推送到远程。
git push origin my-new-branch只推送新分支。
我不相信有什么简单的或可能的意外,将提交从两个不同的分支推到同一个分支,并在远程进行合并。
我猜这个新分支的历史记录中有master的提交。要查看是否正确,请在本地运行git log my-new-branch,查看这些提交是否在您的历史记录中。
如果是这样的话,当你“切换分支”的时候,你可能在新的提交完成之后从master * 分支出来,所以新的分支拥有历史上所有的提交,而不仅仅是那个分支独有的提交。

kx7yvsdv

kx7yvsdv4#

答案晚了,但我会分享我的解决方案,为我工作。
最后,/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

和指挥;

git push all --all

积分:Pushing to Multiple Git Repositories Simultaneously

zwghvu4y

zwghvu4y5#

你可以做一个

git branch | grep "<pattern>" | xargs git push

用正则表达式替换<pattern>以匹配分支名称,就这样了。
如果这是您首次提交此分支,则可以添加--set-upstream origin

fdbelqdn

fdbelqdn6#

别忘了,你有弯曲的变化(在你的工作树)和开关分支,这些变化可能会持续。然后你添加/提交/推送,并感到惊讶。

相关问题