以下一行命令可快进所有有上游分支的分支,如不可能则打印错误信息:
git branch \
--format "%(if)%(upstream:short)%(then)git push . %(upstream:short):%(refname:short)%(end)" |
sh
它是如何工作的?
它使用带有git branch
命令的自定义格式。对于每个具有上游分支的分支,它会打印一行具有以下模式的内容:
git push . <remote-ref>:<branch>
这可以直接通过管道符号 |
传输到 sh
(假设分支名称是规范的)。如果想查看它的操作,请省略 | sh
。
注意事项
当前已检出的分支将不会被更新,并且不会显示任何消息。
! [remote rejected] origin/master -> master (branch is currently checked out)
为此,您可以使用常规的git pull --ff-only
。
别名
将以下内容添加到您的.gitconfig
中,以便git fft
执行此命令:
[alias]
fft = !sh -c 'git branch --format \"%(if)%(upstream:short)%(then)git push . %(upstream:short):%(refname:short)%(end)\" | sh' -
别名是“快进式追踪(分支)”的简写。
master
分支上执行git push
应该会推送除了你的master
分支之外的任何内容,如果你没有对master
进行任何更改,那么你不应该尝试推送它。 - CB Baileyorigin/*
)会自动更新,并且在任何情况下都可供参考。 - CB Bailey