在此之前,我认为git fetch和git push对$GIT_DIR/config的影响是一样的,因为这两者都是用于repository engagements的命令,但是当我们为当前存储库添加一个存储库作为remote repository时,Git会在config中为git fetch创建一个默认的refspec集合,例如:
fetch = +refs/heads/*:refs/remotes/remote_repository/*为什么对git推入配置文件的默认refspec集不做相同的操作?
我猜差异是由命令的default目的引起的:
fetch的默认用途是用于downloading all objects and refs from another repositorypush的默认用途是updating specific remote refs along with associated objects但我对我的猜测不太确定。是真的吗?
发布于 2016-04-16 21:18:01
git push的工作方式有点不同。
可以设置push.default参数来控制它。
这里是gitv2.0发行说明,它解释了git对待push (简单还是匹配)的方式的变化。在gitv2.0中对此进行了更新,以修复默认的git push行为。
在使用gitv2.0之前,当您执行git push时,它会推送所有已更改的分支(、all ,而不仅仅是当前分支)。
Git v2.0发行说明 后向兼容性注释 当
matching没有说要推什么时,到目前为止,我们已经使用了传统的git push [$there]语义(只要在那里已经有同名的分支,那么所有的分支都被发送到远程)。在Git2.0中,默认的是simple语义,它推动:
您可以使用配置变量push.default来更改此设置。例如,如果您是一个想继续使用matching语义的老计时器,可以将变量设置为matching。阅读文档以了解其他可能性。
https://stackoverflow.com/questions/36666709
复制相似问题