Git问题汇总

标签: Git 分类: 软件 创建时间:2020-04-18 01:23:56 更新时间:2025-01-17 10:39:22

1.error: cannot lock ref ‘refs/remotes/origin/master’: unable to resolve reference ‘refs/remotes/origin/master’: reference broken

执行git pull 时遇到的问题。

解决方法,
(1) 首先我执行了

1
git update-ref -d refs/remotes/origin/master

结果出现了新的问题:error: cannot lock ref ‘refs/remotes/origin/master’: unable to resolve reference ‘refs/remotes/origin/master’: reference broken

(2) 上面方法不行的话,我直接就删除了 .git\refs\remotes\origin 下的master文件,然后重新拉取和提交,然后就解决了问题。

(3) 后来又出现了:Git cannot lock ref ‘HEAD’: unable to resolve reference HEAD,然后我执行了下面的步骤,解决了问题。

1
2
3
4
5
## 删除文件
.git/refs/heads/branch_name

## 执行命令
git reset

2.fatal: refusing to merge unrelated histories

在操作后面添加:–allow-unrelated-histories

1
git pull origin master --allow-unrelated-histories

3.fatal: Authentication failed for ‘’

在命令行中输入git push ,总是弹出权限问题。

用了:git config –system –unset credential.helper 命令,不好使。那就打开:C:\Users\用户名.gitconfig,删除密码管理。

1
2
[credential]
helper = manager

4.git reset more???

执行:

1
git reset --hard HEAD^

告诉我More? More? 我怎么知道More?

改成:git reset –hard “HEAD^” 就可以了。

参考文章:
1.Git常见问题

5.执行git add . 时遇到 warning: You ran ‘git add’ with neither ‘-A (–all)’ or ‘–ignore-removal’

在仓库中删除文件后,试图直接用 git add . 将所有删除工作提交暂存区,结果遇到了报错:

1
2
3
4
5
6
7
8
9
10
11
12
warning: You ran 'git add' with neither '-A (--all)' or '--ignore-removal',
whose behaviour will change in Git 2.0 with respect to paths you removed.
Paths like 'public/static/js/gis/.TMap.js.swp' that are
removed from your working tree are ignored with this version of Git.

* 'git add --ignore-removal <pathspec>', which is the current default,
ignores paths you removed from your working tree.

* 'git add --all <pathspec>' will let you also record the removals.

Run 'git status' to check the paths you removed from your working tree.

用 git add –all 可以解决问题。

6.warning: LF will be replaced by CRLF

这个是在windows系统中必见的一个问题。这个是个警告,告诉你在提交的时候,会自动把CRLF转换为LF,等再linux上就不用在转换了。忍忍就过去了,不是什么大毛病。

我觉得还是关闭这个自动转换比较好,要不在编写shell脚本的时候,总是会出现问题。

1
2
3
4
## 全局设置
git config --global core.autocrlf false
## 查看
git config --get core.autocrlf

7.Bad git config file .git/config

执行hexo d的命令时,出现了这个问题:

直接把 .deploy_git 文件删掉就可以了,然后再次执行 hexo d

8.fatal: refusing to merge unrelated histories

慎重执行下面的命令,虽然能解决问题,但是会出现这个冲突,最后会在很多文件中生成: <<<<<<< HEAD 冲突标志符,估计和换行符有关。

1
git pull origin master --allow-unrelated-histories

9.出现gun nano界面

提交的时候,出现了冲突,需要输入合并的理由,但是就是不会操作,需要按Ctrl+X然后输入y,然后再按Ctrl+X就可以了。将编辑器改为vim,使用 git config命令

1
git config --global core.editor "vim"

10.raw.githubusercontent.com port 443: Connection refused

在下载和安装nvm的时候,出现了这样的问题,当然也不仅仅是这个库的问题,还有很多关于github的库都和这个有问题。

有人推荐使用switchhousts修改,我这里直接使用了命令行编辑了hosts文件,增加了下面的内容

1
2
3
4
5
## sudo vim /etc/hosts
199.232.68.133 raw.githubusercontent.com
199.232.68.133 user-images.githubusercontent.com
199.232.68.133 avatars2.githubusercontent.com
199.232.68.133 avatars1.githubusercontent.com
参考文章:
1.如何解决类似 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused 的问题 #10 (这里提供了一个使用switchhosts修改host文件的方法,出现这个问题的原因主要是DNS污染导致的)

11.LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to raw.githubusercontent.com:443

12.Your name and email address were configured automatically based

在苹果上提交的时候,出现了下面的问题:

1
2
3
4
5
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly. Run the
following command and follow the instructions in your editor to edit
your configuration file:

解决方法:键入 git config –global user.name “你的 GitHub 用户名” 与 git config –global user.email “你的 GitHub 用户名对应的 email 地址”。然后再键入 git commit –amend –reset-author 即可。

参考文章:
1.GitHub 笔记 (这里有解决办法和原因)

13.crun: error: invalid active developer path

MacOS 升级到Big Sur之后,就出现了这个问题:crun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

解决方法:

1
2
3
4
5
6
7
8
## 重新安装
xcode-select --install

## 如果重装不行到话就执行
sudo xcode-select -switch /

## 还不行就执行,这两个方法我还没用
sudo xcode-select --reset

14.Not possible to fast-forward

本地提交了更改,但是没有先pull,会出现这个问题。但是如果代码有冲突(别人和你修改了同一行代码,导致git不能自动合并),你会发现执行完之后本地版本变成了:develop|REBASE 1/157,类似于这样的,说明rebase失败了,命令会提示哪些文件没有rebase成功,你需要手动将这些冲突合并。等待所有冲突文件修改完成,暂存所有文件。

1
2
3
4
5
6
7
## master指的是当前修改的分支,请修改当前你所修改的分支名称(不然会出人命的0.0)
git pull origin master --rebase
git pull
## 如果还是不行,那就继续执行
git rebase --continue

## 可能还是会有错误,解决冲突后,重试 git rebase --continue
参考文章:
1.git pull 提示Not possible to fast-forward,无法提交也无法更新 如果依然存在冲突文件,重复步骤3、4、5,直到所有冲突修改完毕就可以了,最后就能正常提交更新了。
2.git pull提示Not possible to fast-forward的解决方法 这个就差了一步,–continue
3.Fatal: Not possible to fast-forward, aborting 两种情形但不同解决方法,基本上也是上面的东西

15.Pulling without specifying how to reconcile divergent branches is discouraged

1
git config pull.rebase false

16.Permanently added ‘xxx’ (ECDSA) to the list of known hosts

17.unsafe repository To add an exception for this directory, git config –global –add safe.directory

我新装了git之后出现的这个问题

【解决】
出现这个问题的原因,可能就是因为我重装了系统之后,文件及其文件夹的所有者变化了。

(1) 可以直接如下添加安全目录,这样太麻烦了。

1
2
## 直接设置安全目录
git config --global --add safe.directory D:/

(2) 也可以使用修改文件夹的所有者的方式,右键文件属性->安全->高级->更改所有者,包括子文件夹,如果文件夹比较多,可能比较慢。

18.no matching host key type found. Their offer: ssh-rsa

在用户文件夹下 ~/.ssh/ 下新建 config 文件,里面填入,windos用户就是另外的用户文件夹了,我这里就不贴了。

1
2
3
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

19.gitee更新不到最新代码

这个问题真是奇怪,我使用git pull origin master 拉取最新的代码,显示已经更新了,但是实际上本地文件还是没有修改。

【解决方法】

1
2
3
4
# 重置索引和工作目录
git reset --hard
# 更新代码
git pull

20.Host key for github.com has changed and you have requested strict checking

【解决方法】
我在拉取远程仓库的时候,出现了这个问题,我还以为是安装了conda的环境导致的,后来发现不是,在known_hosts里面,github的地址是一个192的地址,我删除了这个地址之后,重新拉取了远程仓库。

1
2
# 编辑known_hosts文件,删除github这一列,重新拉取
vi ~/.ssh/known_hosts

如果在Azure.Devops上也发生了这个问题,那就是同样的道理进行配置就好了。

21.invalid path

在我在windows上进行切换的时候,出现了问题:“error: invalid path ‘E:\workspace\jeecg-boot/src/main/java/org/jeecg/modules/demo/mapdata/controller/GpsHistoryController.java’”,我明明没有这个 E:\workspace 目录啊,到底是怎么回事呢?我在mac系统上没有问题啊。

1
2
3
4
5
6
7
8
# 克隆
git clone 远程
# 进入目录
cd 远程
# 拉取分支
git fetch origin dev
# 创建本地分支对应远程分支
git checkout -b dev origin/dev

【尝试方案】
(1)我尝试执行了下面的方法,结果无效。

1
git config core.protectNTFS false

(2)将整个仓库的中文改为英文,无效

(3)重新安装了 git 工具,还是无效。

(4)使用 git rm 命令删除文件,结果没有这个路径。

(5)我重新把整个的 .git 文件删除了,然后重新上传了,结果从mac 上传,从windows 上下载,结果还是报错。直接在克隆的时候就报错了。“fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.”

最后也克隆不下来,只生成了一个文件夹,和里面的一个 .git 文件夹,其他的什么文件都没有。

【解决方案】
我突然发现了这么一个奇怪的东西,就是在我的仓库里面,出现了这个 E:\wockspace 这个东西,我不记得自己提交过这个东西啊。我记得这是在使用 jeecg-boot 生成代码的时候出现的这个东西,原来在mac上是被隐藏了啊。

使用 rm -rf 删除之后,重新提交就可以了。

1
rm -rf E:\\workspace\\jeecg-boot
参考文章:
1.windows10 git 切换分支error: invalid path
2.git checkout master 报错 error: invalid path ‘文件路径‘ 大概意思是说NTFS有个路径保护机制,防止文件系统出错。
3.git - 移除文件以及取消对文件的跟踪
4.windows下git clone后出现invalid path的解决方法 git config –global core.protectNTFS false。虽然是能克隆下来了, 但是因为windows和linux、mac支持的文件命名字符不一样,所以有些文件就会消失,这个望须知

我切换分支的时候,又出现了这个问题。这个问题也让我很纳闷,本来我就已经进行了文件的保存和提交,然后切换分支的时候,就出现了问题。我把idea关掉之后,然后使用命令行:git status,发现竟然有文件被删除了,我只好把文件重新拷贝回来,然后进行 add 重新提交。

参考文章:
1.git错误:Unlink of file ‘xxx’ failed.Should I try again? 原因是git维护管理的代码被其他程序在使用,如IDE(Android Studio等)。解决方法关闭程序IDE或使用到程序代码的应用即可。

23.’credential-manager’ is not a git command

这个问题主要出在了window端,后来我也没有解决,就先这个样子了,没有办法,只能换到了mac上进行了提交和更新,暂时先这个样子吧。

【尝试解决方案】
1.配置 credential.helper

1
git config --global --unset credential.helper

24.non-fast-forward

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。