Git - push.default "matching"和"simple"之间有什么区别

4 浏览
0 Comments

Git - push.default "matching"和"simple"之间有什么区别

我已经使用Git有一段时间了,但我从来没有自己设置过新的远程仓库,一直对此很好奇。我一直在阅读教程,但对于如何使git push起作用感到困惑。

如果我只是使用git push,它会要求我设置一个“默认分支”来指向。这两个选项之间有什么区别呢?

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

matching选项只会推送我本地仓库上的所有分支,如果它们不匹配,我必须手动告诉它推送我有的新的本地分支,对吗?这是最佳实践还是simple最好呢?

0
0 Comments

Git v2.0版本发布后,出现了一个关于push.default配置的问题。在之前的版本中,当执行git push [$there]命令时,如果没有指定要推送的内容,Git默认使用"matching"语义来进行推送。也就是说,只要远程仓库中存在与本地仓库同名的分支,所有分支都会被推送到远程仓库。然而,在Git 2.0中,这个默认行为被修改为了"simple"语义,推送的内容变为:

- 只有当前分支与远程仓库同名的分支会被推送;

- 只有当当前分支与远程仓库同名的分支是集成的(即当前分支是与远程分支关联的)时,才会进行推送。

如果要改变这个默认行为,可以通过配置变量"push.default"来修改。如果用户希望继续使用"matching"语义,可以将该变量设置为"matching"。具体的设置方法可以参考相关文档。

另外,还有关于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>命令会忽略删除操作。如果用户真的希望只添加或修改<path>路径下的文件,可以使用git add --ignore-removal <path>命令。

以上是关于Git v2.0版本中出现的关于push.default配置的问题以及相关解决方法的整理。

0
0 Comments

Git - push.default "matching"和"simple"之间的区别是什么?

问题的出现原因:

根据Git文档中的说明,push.default参数用于定义在没有显式给出refspec的情况下git push应该执行的操作。它有不同的取值适用于特定的工作流程。然而,在早期版本的Git中,push.default的默认设置是matching,这导致了一些问题。matching模式会将本地所有与远程同名的分支都推送到远程仓库,无论当前工作分支是什么,这可能包括一些你不想分享的分支。这种行为可能会给初学者带来困惑和不必要的麻烦。

问题的解决方法:

为了解决matching模式可能带来的问题,Git 2.0版本引入了新的默认设置simple。simple模式在中心化工作流中与upstream模式相似,但增加了一个安全措施,如果上游分支的名称与本地分支不同,会拒绝推送。这是最安全的选项,适合初学者使用。Git 2.0版本以后,simple模式将成为默认设置。

另外,还有其他可选的push.default设置,如nothing、current和upstream,它们适用于不同的工作流程和使用习惯。在个人使用中,一般会选择current模式,它只会推送当前工作分支,适用于总是在进行分支切换的情况。

通过对Git文档中关于push.default参数的解释,可以了解到matching和simple之间的区别以及问题的出现原因。为了解决matching模式可能带来的问题,Git引入了simple模式作为默认设置,并提供了其他可选的设置来适应不同的工作流程和使用习惯。对于初学者来说,推荐使用simple模式作为默认设置。

0
0 Comments

Git - push.default "matching"和"simple"之间的区别是什么

在Git中,push.default配置决定了git push命令是推送所有分支还是只推送当前分支。下面是对该问题的出现原因和解决方法的整理。

问题的出现原因:

在Git中,push.default默认配置为matching,这意味着git push命令会推送本地所有分支到远程分支,并进行合并操作。然而,有些情况下我们可能只想推送当前分支,或者只想手动、逐个地推送分支。

解决方法:

1. 如果想要推送所有分支,可以将push.default配置为matching:

git config --global push.default matching

这将会将所有分支推送到远程分支,并进行合并操作。

2. 如果只想推送当前分支,可以将push.default配置为simple:

git config --global push.default simple

这将只推送与当前分支相同命名的远程分支。

需要注意的是,simple选项在较早的Git版本中已不再可用,而current选项仍可用。同时,tracking是upstream的一个废弃的同义词。

以上就是关于Git中push.default "matching"和"simple"之间的区别以及问题的出现原因和解决方法的整理。

0