前言全局说明
一、说明
使用 git 多人提交时,如果你 执行 git commit 后,又执行 git push ,但此时,你的同事比你早几秒提交,此时,你push 时,就会因为你没有pull导致报错。最简单的方式,是重新拉取整个库,但如果库很大,每次拉也不太现实。
二、错误提示
2.1 git pull 提示
提示:您有偏离的分支,需要指定如何调和它们。您可以在执行下一次
提示:pull 操作之前执行下面一条命令来抑制本消息:
提示:
提示: git config pull.rebase false # 合并
提示: git config pull.rebase true # 变基
提示: git config pull.ff only # 仅快进
提示:
提示:您可以将 "git config" 替换为 "git config --global" 以便为所有仓库设置
提示:缺省的配置项。您也可以在每次执行 pull 命令时添加 --rebase、--no-rebase,
提示:或者 --ff-only 参数覆盖缺省设置。
致命错误:需要指定如何调和偏离的分支。
三、原因
git config pull.rebase false 的作用是设置 Git 在执行 git pull 命令时使用 merge 而不是默认的 rebase。
git pull 命令是将远程分支的更新合并到本地分支,如果本地分支有更新,则会自动执行合并操作。
默认情况下,git pull 命令会使用 rebase 的方式来合并分支。
使用 rebase 的好处是可以保持提交历史的线性,避免了 merge 产生的分支合并记录。
但是,如果在多人协作的项目中使用 rebase,可能会破坏提交历史,导致代码冲突,因此需要谨慎使用。
通过设置 git config pull.rebase false,Git 将默认使用 merge 的方式来合并分支,从而避免了 rebase 带来的潜在问题。
需要注意的是,如果在执行 git pull 命令时指定了 --rebase 选项,则 Git 会优先使用 rebase 的方式来合并分支,
而不受 git config pull.rebase 的设置影响。
因此,如果需要强制使用 merge 的方式来合并分支,可以在执行 git pull 命令时添加 --no-rebase 选项。
四、解决方法
4.1 查看配置
4.1.1 查看系统级配置
git config --system pull.rebase
4.1.2 查看当前用户级
git config --global pull.rebase
4.1.1 查看项目级
git config pull.rebase
4.2 临时,执行命令添加 --no-rebase 选项
git pull --no-rebase
git push --no-rebase
4.3 永久,写道配置文件中
4.3.1 写到系统级(不推荐)
git config --system pull.rebase false
4.3.2 写到当前用户级
git config --global pull.rebase false
4.3.1 写到项目级
git config pull.rebase false
4.4 取消配置
4.4.1 取消系统级配置
git config --system --unset pull.rebase
4.4.2 取消当前用户级
git config --global --unset pull.rebase
4.4.1 取消项目级
git config --unset pull.rebase
五、 配置文件路径
5.1 系统级,配置文件路径
Windows 配置项写入到 "C:\Program Files\Git\etc\gitconfig" 文件中。
Linux 配置项写入到 "/etc/gitconfig" 文件中。
5.2 当前用户级,配置文件
Windows 配置项写入到 "C:\Users\<用户名>\gitconfig" 文件中。
Linux 配置项写入到 "/home/${USER}/gitconfig" 文件中。
5.1 项目级,配置文件
.git/gitconfig
免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。
参考、来源:
https://blog.csdn.net/kuang_nu/article/details/129592235
https://www.cnblogs.com/wutou/p/17585668.html