最近抹盘重装系统,更新到macOS Monterey,git操作一番遇到了挺多知识点。
git pull提醒参数缺失
用vscode的源代码管理工具将自己的博客项目提交到GitHub时,遇到以下提醒:
Pulling without specifying how to reconcile divergent branches is discouraged.
即没有指定pull的具体方式。这个问题比较有趣,在终端里可以忽略提示继续push,但在vscode会比较严格,直接push失败。
关于pull的参数:
pull.rebase
:普通合并,可配置false
或true
。false
:缺省策略。拉取内容并包括其他分支的提交记录(commit),会导致自己的本地仓库有别人的提交记录。ture
:变基合并。把其他分支的提交记录整合到自己的本地仓库,保持本地提交记录线性,不出现别人的提交记录。
pull.ff only
:只尝试快进合并,如果失败则终止合并。快进合并即如果当前分支的所有提交都已经包含在另一个分支里了,则本次操作不创建新的提交(commit),只是将当前分支指针指向了合并进来的分支。
来源:rebase策略的作用
这个命令做了以下内容: a.把你 commit 到本地仓库的内容,取出来放到暂存区(stash),这时你的工作区是干净的。
b.然后从远端拉取代码到本地,由于工作区是干净的,所以不会有冲突。
c.从暂存区把你之前提交的内容取出来,跟拉下来的代码合并。
所以 rebase 在拉代码前要确保你本地工作区是干净的,如果你本地修改的内容没完全 commit 或者 stash,就会 rebase 失败。
来源:git pull –rebase 理解
一般情况下,自己的博客项目都是在本地更新后push到远程仓库(单一分支),所以使用全局使用缺省参数即可:
git config --global pull.rebase false
当然也可以使用快进合并:
git config --global pull.ff only
git push提示Permission denied
我遇到的情况还挺多 (−_−#)
- 设置了私密邮箱并且屏蔽了暴露邮箱的push
安装git后会配置user.name
和user.email
,email如果用真实邮箱,git push的时候提示邮箱会暴露,并且无法提交。
这是因为GitHub的email设置里,打开了Keep my email addresses private
和Block command line pushes that expose my email
两个选项。
根据官方文档操作,把user.email
替换为noreply的邮箱即可。
- ssh密钥问题
忘记添加到GitHub,或添加错误,重新添加一下就👌了。
- GitHub风控了IP
这个我是没想到,因为终端里没有任何其他说明,最后是尝试打开GitHub发现被限制了访问,提示过一段时间再访问。随后切换网络或者fq访问一下,问题解决。