Git-push.default和;“匹配”;及;简单的;

Git-push.default和;“匹配”;及;简单的;,git,git-push,git-remote,Git,Git Push,Git Remote,我使用git已经有一段时间了,但我自己从来没有建立过一个新的远程回购,我一直很好奇这样做。我一直在阅读教程,对如何让“git推送”工作感到困惑 如果我简单地使用gitpush,它会要求我查看要指向的默认分支(?)?它提供给我的这两个选项有什么区别 git config --global push.default matching git config --global push.default simple 匹配只是推送我在本地回购协议上拥有的任何分支,如果它们不匹配,我必须手动告诉它推送我拥

我使用git已经有一段时间了,但我自己从来没有建立过一个新的远程回购,我一直很好奇这样做。我一直在阅读教程,对如何让“git推送”工作感到困惑

如果我简单地使用
gitpush
,它会要求我查看要指向的默认分支(?)?它提供给我的这两个选项有什么区别

git config --global push.default matching
git config --global push.default simple

匹配只是推送我在本地回购协议上拥有的任何分支,如果它们不匹配,我必须手动告诉它推送我拥有的任何新的本地分支,对吗?这是使用的最佳实践还是简单的最佳实践?

git push
可以根据此配置推送所有分支或单个分支:

推送所有分支

git config --global push.default matching
它会将所有分支推送到远程分支并合并它们。 如果不想推送所有分支,可以在完全指定其名称的情况下推送当前分支,但这与
default
没有太大区别

如果当前分支的命名上游相同,则仅推送当前分支

git config --global push.default simple
所以,在我看来,最好使用这个选项,一个分支一个分支地推进代码。最好手动和单独推送分支。

来自GIT文档:

下面给出了完整的信息。简言之,
simple
只会推送
当前工作分支
,即使如此,也只会推送远程上同名的分支。这对于初学者来说是一个非常好的设置,将成为GIT 2.0中的默认设置

匹配
将在本地推送远程上具有相同名称的所有分支。(不考虑您当前的工作部门)。这意味着可能会推送许多不同的分支,包括那些您甚至不想共享的分支

在我个人使用中,我通常使用一个不同的选项:
current
,它推送当前工作分支(因为我总是为任何更改进行分支)。但对于初学者,我建议
simple

推送默认值
定义在不使用refspec的情况下git push应该采取的操作 明确给出。不同的值非常适合特定的情况 工作流程;例如,在纯粹的中心工作流中(即获取 源等于推送目的地),上游可能是什么 你想要的。可能的值为:

nothing(无)-除非选择了refspec,否则不要推出任何内容(错误) 明确给出。这主要是为了那些想要避免的人 总是直言不讳地犯错误

当前-推送当前分支以更新具有相同属性的分支 接收端的名称。在中央和非中央工作 工作流程

上游-将当前分支推回其更改所在的分支 通常集成到当前分支(称为 @{上游})。此模式只有在您按下按钮时才有意义 与您通常从中提取的存储库相同(即中央工作流)

简单-在集中式工作流中,使用添加的 如果上游分支机构的名称不同,则拒绝推送的安全性 从本地的那个

当按下与您使用的遥控器不同的遥控器时 正常情况下,以电流的形式工作。这是最安全的选择,也是最好的选择 适合初学者

此模式将成为Git2.0中的默认模式

匹配-推送两端具有相同名称的所有分支。这 使您正在推送的存储库记住分支集 这将被推出(例如,如果您总是推动maint和master 没有其他分支,您推送到的存储库将拥有 这两个分支,以及您的本地maint和master将被推送 那里)

要有效地使用此模式,必须确保所有分支 在运行git push之前,您已经做好了被推出的准备, 因为该模式的全部要点是允许您推送所有 一气呵成。如果你通常只在一个分支上完成工作 推出结果,当其他分支未完成时,此模式为 不适合你。此外,此模式不适合推入共享模式 中央存储库,因为其他人可能会在那里添加新的分支,或者 更新您无法控制的现有分支的尖端

这是当前的默认设置,但Git2.0将把默认设置更改为 简单

GitV2.0发行说明 向后兼容性说明 当
gitpush[$there]
没有说明要推什么时,我们使用了 到目前为止,传统的“匹配”语义(所有分支都已发送) 只要已经存在同名的分支,就可以发送到远程 在那边)。在Git 2.0中,默认值现在是“简单”语义, 它推动:

  • 只有当前分支指向具有相同名称的分支,并且 当当前分支设置为与该远程分支集成时 分支,如果您正在推送到与您从中取回相同的远程位置;或

  • 如果需要,则仅将当前分支添加到具有相同名称的分支 正在推送到一个您通常不在的远程位置

您可以使用配置变量“push.default”来更改 这如果你是一个想继续使用 “匹配”语义,您可以将变量设置为“匹配”,以便 例子。阅读文档了解其他可能性

git add-u
git add-A
在子目录中运行时 如果不指定要在命令行上添加的路径,则 对整个树进行操作,以确保与git commit-a的一致性 其他命令(这些命令仅用于在当前 子目录)。如果你想说,可以说
git add-u.
git add-A.
将操作限制到当前目录

git add