通常,当我推送时,我使用git push origin master
,我通常在脑海中读到它,从我的本地主机推送到远程源。我现在正在制作一个需要很多人使用的脚本。假设我们有一个名为 Release 1.0 的远程分支。我希望我的脚本自动将用户分支推送到远程,无论分支的名称是什么。假设我们有一个名为experimentalBranch 的分支,它基于Release 1.0。无论名称如何,如何始终将分支推送到远程?按照我的正常方式,这是行不通的,因为我指定了本地分支名称 master。
我应该补充一点,我也不知道 Remote 的名称。本质上我想说“将我的本地分支推送到远程,无论本地和远程是什么。”
最佳答案
这会推送到具有正确分支名称的给定远程,无论它是什么:
git push origin HEAD
不幸的是,您仍然需要知道其远程名称。
如果您想要即使不知道远程名称也能工作的东西,那就有点复杂了。我能找到的最好方法是这个命令,它打印远程跟踪分支的名称,包括远程的名称:
git rev-parse --abbrev-ref --symbolic-full-name @{u}
其输出格式为remotename/branchname
。您可以使用 bash 从中提取远程名称,例如:
refname=$(git rev-parse --abbrev-ref --symbolic-full-name @{u})
IFS=/ read -a arr <<< "$refname"
remote=${arr[0]}
branch=${arr[1]}
然后你可以像这样推送:
git push $remote $branch
# actually this should do as well:
# git push $remote HEAD
关于git - 如何每次都将未知名称的分支推送到远程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23573968/