Warning: push.default is unset; its implicit value is changing in Git 2.0
Warning: push.default is unset; its implicit value is changing in Git 2.0
技术背景
在Git 2.0版本中,push.default的隐式值发生了改变。当使用git push命令且未设置push.default时,就会出现警告信息。了解不同的push.default设置值,能帮助我们更精准地控制git push的行为。
实现步骤
1. 了解不同的push.default值
- matching:
git push会将所有本地分支推送到远程同名分支。这可能会意外推送一些不想推送的分支。 - simple:
git push仅将当前分支推送到git pull拉取的分支,并且会检查名称是否匹配。这是一种更直观的行为,也是Git 2.0的默认设置。 - nothing:除非明确指定refspec,否则不推送任何内容(报错)。主要用于希望始终明确操作以避免错误的用户。
- current:将当前分支推送到接收端同名分支,适用于集中式和非集中式工作流。
- upstream:将当前分支推回到通常将更改集成到当前分支的分支(即
@{upstream}),仅在推送到通常拉取的同一仓库时才有意义(集中式工作流)。
2. 设置push.default值
可以通过以下命令设置push.default值:
1 | |
其中<value>可以是matching、simple、nothing、current或upstream。
核心代码
设置push.default为simple
1 | |
设置push.default为current
1 | |
最佳实践
- 初学者:建议使用
simple模式,它更安全,能避免意外推送不必要的分支。 - 个人开发:如果总是为每个更改创建新分支,可以使用
current模式,只推送当前工作分支。
常见问题
1. 升级系统或Git版本后出现警告
如在升级到Mavericks后,Git 1.8.3.4可能会出现此警告。可以通过设置push.default值来消除警告。
2. Git抱怨配置中的simple值
如果Git抱怨simple值,检查Git版本。若版本过低,可能不支持simple值,可以考虑升级Git。
Warning: push.default is unset; its implicit value is changing in Git 2.0
https://119291.xyz/posts/warning-push-default-is-unset-its-implicit-value-is-changing-in-git-2-0/