我有一个Bash函数来防止在没有上游分支的情况下推送到远程存储库(例如GitHub)时出错。您可能熟悉此错误:
$ git checkout -b test
$ git push
fatal: The current branch test has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin test
要解决这个问题,我所做的就是拦截对git push
的任何调用,看看我是否收到与没有上游分支相关的错误。在出现该错误的情况下,不是复制并粘贴上面建议的命令,而是我的终端会自动为我执行。
我目前的Git配置是push.default simple
,但今天我才意识到我可以使用push.default current
来实现相同的行为(删除我的自定义代码)
参考。 https://www.kernel.org/pub/software/scm/git/docs/git-config.html
current - 推送当前分支以使用相同的更新分支 接收端的名称。适用于中央和非中央 工作流程。
简单 - 在集中式工作流程中,像上游一样添加工作 如果上游分支的名称不同,则拒绝推送的安全性 来自当地的。
当推到与遥控器不同的遥控器时 通常来自,作为当前工作。这是最安全的选择 适合初学者。
此模式已成为Git 2.0中的默认模式。
那么,切换到git config push.default current
会有什么影响?我想了解一些我可能遇到问题的可能情况,因为Git有不同的行为。
答案 0 :(得分:3)
这意味着当你推送到任何仓库时,git会假设分支名称对应。如果您只是推送到一个远程(origin
)并且您始终在远程和本地的同一分支使用相同的名称,那么它会没问题。如果要设置其他类型的分支映射 - 例如,如果本地功能分支feature_1
应该转到远程分支dev/features/feature_1
或类似的东西 - 那么您不希望使用{{1} }作为simple
。
没有任何隐藏的含义;您发布的文档解释了行为,如果这是您想要的行为,则可以使用它。