问题
问题一 、 refusing to merge unrelated histories
在使用git的时候相当于没有更新 (没有pull)直接提交 到主分支(push master)报错, 然后在才又更新代码这时候会报错
git pull https://gitee.com/453972820/xxx.git From https://gitee.com/453972820/xcxnm * branch HEAD -> FETCH_HEAD fatal: refusing to merge unrelated histories #意思 拒绝合并不相关的历史
这时候需要加上配置项,--allow-unrelated-histories #允许合并历史
git pull https://gitee.com/453972820/xcxnm.git master --allow-unrelated-histories
From https://gitee.com/453972820/xxx
* branch master -> FETCH_HEAD
Merge made by the 'recursive' strategy. #通过“递归”策略进行合并。
README.md | 9 +++++++++
1 file changed, 9 insertions(+)
create mode 100644 README.md
问题二、在github上创建项目,然后本地git init
然后没有git pull -f --all
然后git add . | git commit -am "init"
导致github上的版本里有readme文件和本地版本冲突,下面给出冲突原因:
[master] git push -u origin master
[master] git push -u origin master -f #强制覆盖已有的分支(会覆盖服务器的代码,最好备份),在提交,ok
使用git进行pull操作中,你会发现会有这么一个错误,这个其实类似于svn中的冲突。那如果解决这个问题呢,如图所示。
先stash changes,隐藏本地的改变,执行完这步后,再进行pull,pull完了一定不要忘记unstash changes,恢复你刚隐藏的改变。
如果系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时候,
在发布这个配置文件的时候,会发生代码冲突:
error: Your local changes to the following files would be overwritten by merge:
protected/config/main.php
Please, commit your changes or stash them before you can merge.
如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:
git stash
git pull
git stash pop
然后可以使用git diff -w +文件名 来确认代码自动合并的情况.
反过来,如果希望用代码库中的文件完全覆盖本地工作版本. 方法如下:
git reset --hard
git pull
其中git reset是针对版本,如果想针对文件回退本地修改,使用
[plain] view plain copy
git checkout HEAD file/to/restore