Git - push.default "match "和“;simple"

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

如果我只是使用git push,它会要求我查看一个默认分支(?)指向?它提供给我的这两个选项之间的区别是什么?

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

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

132284 次浏览

git push可以推所有分支,也可以推一个分支,这取决于这个配置:

推送所有分支

git config --global push.default matching

它将把所有分支推到远程分支并合并它们。 如果你不想推所有分支,你可以推当前分支,如果你完全指定了它的名称,但这与default没有什么不同

如果分支的上游名称相同,则只推当前分支

git config --global push.default simple

因此,在我看来,最好使用这个选项并逐个分支地推动代码。最好手动和单独地推送分支。

来自GIT文档:Git文档

下面给出了完整的信息。简而言之,simple只会推current working branch,即使这样,也只有当它在遥控器上也有相同的名称时才会推。这对初学者来说是一个非常好的设置,将成为GIT 2.0中的默认设置

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

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

< p > push.default < br > 定义如果没有refspec, git push应该采取的操作 明确给出。不同的值适合于特定的值 工作流;例如,在一个纯粹的中心工作流(即获取 源等于推送目标),上游大概是什么 你想要的。取值为:

nothing -不推送任何东西(错误),除非refspec是 明确给出。这主要是针对那些想要避免的人

.

.

current -推送当前分支以更新相同的分支 接收端的名称。在中心和非中心工作 工作流。< / p >

upstream -将当前分支推回发生变化的分支 通常集成到当前分支(称为 @{上游})。此模式仅在您正在推送到

.

.

.

simple -在集中的工作流中,像上游一样工作 如果上游分支名称不同,安全拒绝推送

当你按到一个与你的遥控器不同的遥控器时 通常从拉起,作为电流工作。这是最安全的选择

.

.

此模式将成为Git 2.0中的默认模式。

matching - push两端同名的所有分支。这 使您正在推送的存储库记住分支集 这将被推出(例如,如果你总是推出维护和master 您推送到的存储库将没有其他分支 这两个分支,你的本地维护和master都会被推送 ) . < / p > 为了有效地使用这种模式,你必须确保所有的分支 你会在运行git push之前就准备好被推出, 这个模式的全部意义在于允许你推送所有的 树枝一气呵成。如果你通常只完成一个分支的工作 当其他分支未完成时,此模式为 不适合你。此外,这种模式也不适合推送到共享 中央存储库,因为其他人可以在那里添加新的分支,或者

.

. 这是当前的默认值,但Git 2.0将更改默认值为 简单。< / p >

Git v2.0发布说明

向后兼容性说明

git push [$there]没有说要推什么时,我们已经使用了 到目前为止,传统的“匹配”语义(所有的分支都发送了 到远程只要已经有同名分支 在那里)。在Git 2.0中,默认的语义是“simple”, 它把:< / p >
  • 只有当前分支到同名分支,且只有 当将当前分支设置为与该远程集成时 分支,如果你正在推送到与你从中获取的相同的远程;李或< / p > < / >

  • 只有当前分支到同名分支,如果你

你可以使用配置变量“push.default”来更改 这一点。如果你是一个想继续使用的老前辈 “匹配”语义,可以将变量设置为“匹配”,用于 的例子。

.

.

.

git add -ugit add -A在子目录中运行 如果没有指定要在命令行上添加哪些路径,它们 为了与git commit -a和保持一致,对整个树进行操作 其他命令(这些命令仅用于操作当前 子目录)。如果你想的话,可以说git add -u .git add -A .

.

.

.

git add <path>现在与git add -A <path>相同,因此 git add dir/会注意到你从目录中删除的路径和 记录移除过程。在较旧版本的Git中,使用git add <path> 忽略删除。你可以说git add --ignore-removal <path>

. add只在<path>中添加或修改的路径,如果你真的想这样做的话