Git 2.29及以上版本中VSCode git sync功能因git pull报错如何解决
Git 2.29及以上版本对拉取操作的分支合并策略做了更严格的校验,未明确配置策略时会触发相关提示。当你配置git config --global pull.ff only后,拉取操作被限制为仅能执行快进合并,一旦本地分支和远程分支出现分叉(即远程分支存在本地没有的提交,同时本地也有未推送到远程的新提交,两者无直接继承关系),快进合并无法完成,就会抛出fatal: Not possible to fast-forward, aborting.报错,报错示意如下:
解决方案
- 方案一:配置拉取默认采用合并策略(适合不介意产生合并提交的场景)
执行命令:git config --global pull.rebase false
后续执行拉取操作时,Git会自动生成合并提交对齐远程分支,不会再触发快进失败报错。 - 方案二:配置拉取默认采用变基策略(适合希望保留线性提交历史的场景)
执行命令:git config --global pull.rebase true
后续执行拉取操作时,Git会自动将本地的新提交变基到远程分支最新提交之后,不会产生额外的合并提交节点。 - 方案三:单次拉取临时指定策略(不想修改全局配置时使用)
需要合并对齐时执行:git pull --no-ff
需要变基对齐时执行:git pull --rebase
VSCode的「同步更改」操作默认逻辑为先拉取远程更新再推送本地提交,修改全局拉取配置后重启VSCode,再执行同步操作即可正常运行。
内容的提问来源于stack exchange,提问作者Newbie21
相关产品推荐
相关产品推荐

