我使用以下命令推送到远程分支:
git push origin sandbox
如果我说
git push origin
这是在我的其他分支中也推送更改,还是只更新我的当前分支?我有三个分支:master、production和sandbox。
git推送文档对此不是很清楚,所以我想永远澄清这一点。
下面的git push命令会准确更新哪些分支和远程?
git push
git push origin
上面的原点是一个遥控器。
我知道gitpush[remote][branch]将只将该分支推送到远程。
与使用别名相比,我更喜欢创建git XXX脚本,这样我可以更容易地对它们进行源代码控制(我们的开发人员都在其路径上有一个特定的源代码控制目录)。
此脚本(称为gitsetpush)将remote.origin.push值的配置值设置为仅推送当前分支的值:
#!/bin/bash -eu
CURRENT_BRANCH=$(git branch | grep '^\*' | cut -d" " -f2)
NEW_PUSH_REF=HEAD:refs/for/$CURRENT_BRANCH
echo "setting remote.origin.push to $NEW_PUSH_REF"
git config remote.origin.push $NEW_PUSH_REF
注意,当我们使用Gerrit时,它将目标设置为refs/for/XXX,以将其推入审查分支。它还假定源是您的远程名称。
使用签出分支后调用
git checkout your-branch
git setpush
很明显,它也可以用来结账,但我喜欢脚本做一件事,并且做得很好
与使用别名相比,我更喜欢创建git XXX脚本,这样我可以更容易地对它们进行源代码控制(我们的开发人员都在其路径上有一个特定的源代码控制目录)。
此脚本(称为gitsetpush)将remote.origin.push值的配置值设置为仅推送当前分支的值:
#!/bin/bash -eu
CURRENT_BRANCH=$(git branch | grep '^\*' | cut -d" " -f2)
NEW_PUSH_REF=HEAD:refs/for/$CURRENT_BRANCH
echo "setting remote.origin.push to $NEW_PUSH_REF"
git config remote.origin.push $NEW_PUSH_REF
注意,当我们使用Gerrit时,它将目标设置为refs/for/XXX,以将其推入审查分支。它还假定源是您的远程名称。
使用签出分支后调用
git checkout your-branch
git setpush
很明显,它也可以用来结账,但我喜欢脚本做一件事,并且做得很好
您可以通过在git配置中设置push.default来控制默认行为。从gitconfig(1)文档中:
push.default
定义如果命令行上没有给定refspec、远程中没有配置refspec以及命令行上给定的任何选项都没有暗示refspec,git push应该采取的操作。可能的值包括:
什么都没有:不要推任何东西matching:(Git2.0之前的默认值)推送所有匹配的分支两端具有相同名称的所有分支都被认为是匹配的。上游:将当前分支推到其上游分支(跟踪是上游的同义词,已弃用)当前:将当前分支推送到同名分支simple:(Git1.7.11中新增,自Git2.0以来默认)喜欢上游,但如果上游分支的名称与本地分支不同,则拒绝推送这是最安全的选择,非常适合初学者。
简单、当前和上游模式适用于那些希望在完成工作后推出单个分支的人,即使其他分支尚未准备推出
命令行示例:
要查看当前配置,请执行以下操作:
git config push.default
要设置新配置,请执行以下操作:
git config push.default current