7 - Git使用过程中踩的坑

1、报错:   fatal: refusing to merge unrelated histories

解决方案: 操作命令后面加–allow-unrelated-histories

git merge master --allow-unrelated-histories # merge时
git pull origin master --allow-unrelated-histories # pull时
git push origin master --allow-unrelated-histories # push时

 

2、报错: error: Your local changes to the following files would be overwritten by merge

方案一:通过commit的方式解决这个冲突问题

方案二:

方法1:stash

git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。

git stash
git commit
git stash pop

方法2:放弃本地修改,直接覆盖

git reset --hard
git pull

 

3、报错:error: You have not concluded your merge (MERGE_HEAD exists)

此时可能是因为同步过程中,出现冲突,需要解决合并冲突的状态

解决方案一:保留本地的更改,中止合并->重新合并->重新拉取

git merge --abort
git reset --merge
git pull

解决方案二:舍弃本地代码,远端版本覆盖本地版本(慎重)

git fetch --all
git reset --hard origin/master
git fetch

 

4、报错:error: unable to read askpass response from 'C:/Program Files/Git/mingw64/bin/git-askpass.exe'

 1)执行命令及操作如下:跳出从浏览器登录github的提示框

 

2)点击Sign in with your browser,如下:

 

 3)查看命令行如下:

 4) git config --list 查看配置列表,发现没有askpass相关

 

 5)执行配置:

$ git config --global core.askpass C:\Program Files\Git\mingw64\libexec\git-core\git-gui--askpass

再执行上述步骤相关还是报错:error: cannot spawn usrbinssh-askpass: No such file or directory

6)执行命令:查询git bash是否正常连接

 ssh -T git@github.com

继续报错:

原因:预估DNS解析问题

解决方案:打开cmd输入ping命令查看github.com是否可以连接,正常ping,说明正常

解决方案:配置本地hosts文件

打开文件地址:C:\Windows\System32\drivers\etc\hosts

在此文件末尾加上以下内容:

192.30.255.112  github.com git 
185.31.16.184 github.global.ssl.fastly.net

再ping

 再次  ssh -T git@github.com

依然报错,实在没有办法!!碰到了此篇文章:https://blog.csdn.net/ReCclay/article/details/121254869 (将HTTPS链接更换为SSH链接)

然后,成了成了,如下:

 

posted @ 2022-08-27 22:02  xiaoyanhahaha  阅读(629)  评论(0编辑  收藏  举报