推送具有不同名称的远程特定分支

Push remote specific branches with different names

假设我们 origin 有一个名为 master 的分支,它将被检查;

>> git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'

现在我添加远程 fork 还带有一个名为 master 的分支,它将被检出;

>> git checkout -b fork-master fork/master
Switched to branch 'fork-master'
Your branch is up-to-date with 'fork/master'

这清楚地知道给定分支属于哪个远程,它甚至引用了正确的来源。

假设我想推送到原点,我会这样做;

>> git push

这将使用所有更改更新 origin/master (duh)。

下面是2个推送的例子;

Example 1 **Correct!**;
>> git push fork fork-master:master

Example 2 **Fails**;
>> git push fork --all

这会自动将所有 fork 分支推送到 origin,除了分支 master 将被拒绝(以防发生更改)。

我认为示例 #2 会做的是将 fork-master 推到 fork/master,但这并没有发生。

我可以一次推送所有远程特定分支,而不必将它们指向正确的远程分支名称吗?

我问是因为时不时有很多分支要push

配置default.push到上游

git config default.push upstream

然后,设置本地分支以跟踪相应的远程分支:

git checkout --track -b fork-master fork/master

使用git分支命令验证每个分支都有其当前的上游:

git branch -vv

然后您可以使用 git push <remote> <branch> 将每个 branch 自动推送到 branch@{upstream}

git push fork fork-master fork-test fork-updates fork-123

恐怕无法告诉 Git 将所有上游设置为特定远程分支的分支推送。

但无论如何最好通过在命令行上传递您想要推送的所有分支来具体说明。许多配置选项改变了推送的行为,所以最好是安全的。