通常当我按下我使用的git push origin master
时,我通常会在脑海中读到,请从本地主人那里推送到远程来源。我现在正在制作一个需要用很多人的剧本。假设我们有一个名为Release 1.0的远程分支。我希望我的脚本能够自动将用户分支推送到它的远程,无论分支的名称是什么。因此,假设我们有一个名为experimentalBranch的分支,它基于1.0版。无论名称如何,我怎么能总是把分支推到它的远程?按照我的正常方式,它不起作用,因为我指定了本地分支名称master。
我应该补充一点,我也不知道遥控器的名称。基本上我想说“把我的本地分支推到它的远程,无论本地和远程可能是什么。”
答案 0 :(得分:1)
您想要的脚本:
current_branch=$(git rev-parse --abbrev-ref HEAD)
git push origin $current_branch
您可以在终端输入这些行,或将它们放在一个文件中并将该文件作为脚本运行。
如果你想在终端上找到像git push origin self
这样的好东西,可以把它放在〜/ .bashrc中:
git()
{
if [ "$1" == "push" ] && [ "$2" == origin ] && [ "$3" == "self" ]; then
current_branch=$(git rev-parse --abbrev-ref HEAD)
git push origin $current_branch
else
command git "$@"
fi
}
答案 1 :(得分:1)
使用正确的分支名称将其推送到给定的远程名称,无论它是什么:
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
答案 2 :(得分:0)
你可能想要这个:
git config --global push.default current
配置完成后,您执行以下操作:
git push foobar
它基本上会被翻译成:
git push foobar HEAD