git常见问题及解决

news2024/11/17 0:52:26

文章目录

  • git常见问题及解决
    • 1. 不同操作系统使用git时,CRLF的处理换行问题
      • 1.1 什么是CRLF和LF
      • 1.2 在Git中设置自动转换
    • 2. 多个仓库相同代码推送被拒绝
    • 3. git使用vi编辑器时候报错:Swap file "./.git/.COMMIT_EDITMSG.swp" already exists!
    • 4. Git中文乱码的问题
    • 5. GIT不识别大小写文件夹解决
    • 6. 同一个文件跟踪两次
    • 7. 切换分支报错:有文件未跟踪
    • 8. gitlab保护分支,导致本地`git push -f`报错
    • 9. `git rm --cached` 报错:recursively without -r
    • 10. GIT添加空文件夹到项目`.gitkeep`
    • 11. git clone early EOF error 的解决方式
    • 12. git命令报错:xcrun: error: invalid active developer path
    • 13. git pull报错:fatal: refusing to merge unrelated histories
    • 14. 码云仓库上提示代码仓库存储超过500MB
    • 15. git status 提示:Permission denied
    • 16. git忽略本地已存在文件的修改
    • 17. git pull报错:error: cannot lock ref…unable to resolve reference…reference broken

git常见问题及解决

1. 不同操作系统使用git时,CRLF的处理换行问题

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

错误信息类似于:

# https://git-scm.com/book/zh/v2/自定义-Git-配置-Git
~ git diff > tmp.patch
warning: LF will be replaced by CRLF in src/app/theme/components/menuItem/menuItem.component.css.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in config/webpack.dev.js.

1.1 什么是CRLF和LF

CRLF 是 carriage return line feed的缩写。中文意思是回车换行。
LF是line feed的缩写,中文意思是换行。
CRLF->Windows-style
LF->Unix Style
CR->Mac Style
CRLF表示句尾使用回车换行两个字符(即我们常在Windows编程时使用"\r\n"换行)
LF表示表示句尾,只使用换行.
CR表示只使用回车.

1.2 在Git中设置自动转换

在Git通过下面的命令配置:

$git config --global core.autocrlf true
# Configure Git on Windows to properly handle line endings

设置为true,添加文件到git仓库时,git将其视为文本文件。他将把crlf变成lf。
设置为false时,line-endings将不做转换操作。文本文件保持原来的样子。
设置为input时,添加文件git仓库石,git把crlf编程lf。当有人Check代码时还是lf方式。因此在window操作系统下,不要使用这个设置。

  1. true: x -> LF -> CRLF
  2. input: x -> LF -> LF
  3. false: x -> x -> x
  • 其他的命令
# AutoCRLF
#提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true   
#提交时转换为LF,检出时不转换
git config --global core.autocrlf input   
#提交检出均不转换
git config --global core.autocrlf false

# SafeCRLF
#拒绝提交包含混合换行符的文件
git config --global core.safecrlf true   
#允许提交包含混合换行符的文件
git config --global core.safecrlf false    # 设置这个命令会把警告取消
#提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn


2. 多个仓库相同代码推送被拒绝

当添加一个仓库后,推送文件上去不允许,错误信息类似于:

git push github master 
To https://github.com/user/my_wiki.wiki.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/user/my_wiki.wiki.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

如果远程仓库的代码没用了,不要了,则可以选择强推代码解决问题:

~ git push -u github master -f

3. git使用vi编辑器时候报错:Swap file “./.git/.COMMIT_EDITMSG.swp” already exists!

非正常关闭vi编辑器时会生成一个.swp文件。
使用vi,经常可以看到swp这个文件,那这个文件是怎么产生的呢,当你打开一个文件,
vi就会生成这么一个.(filename)swp文件 以备不测(不测下面讨论),如果你正常退出,那么这个这个swp文件将会自动删除 。
swp文件的来历,当你强行关闭vi时,比如电源突然断掉或者你使用了Ctrl+ZZ,vi自动生成一个.swp文件,
下次你再编辑时,就会出现一些提示。

比如你正在使用vi编辑file.txt文件,然后强制关闭终端,这个时候就会产生.file.txt.swp文件。
当再次使用vi打开file.txt文件就会出现提示, 这个时候可使用下面的命令来恢复未保存的操作:

vi -r file.txt 

这个时候保存中断之前的操作后,.swp文件不会自动删除,需要自己手动删除:

rm .file.txt.swp

4. Git中文乱码的问题

在使用git命令的时候,如果文件名是中文的,就会出现如\200\273\347\273\223.png的乱码。
解决方法,在终端中输入如下命令:

git config --global core.quotepath false

core.quotepath设为false的话,就不会对0x80以上的字符进行quote。中文显示正常。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

参考链接: http://blog.csdn.net/tyro_java/article/details/53439537

5. GIT不识别大小写文件夹解决

在mac电脑下,git仓库中有文件夹首字母大写,修改成首字母小写后,git没有识别出文件夹的修改, 可使用如下命令设置为大小写敏感:

git config core.ignorecase false

6. 同一个文件跟踪两次

由于修改了文件名,仅仅是文件名首字母大小写修改了,然后就导致git同时把这一个文件跟踪了两次,比如我修改了文件夹名字,由Settings 改成 settings,导致文件夹下的文件重复出现:

modified:   src/views/Settings/TagSet/TagDialog.jsx
modified:   src/views/settings/TagSet/TagDialog.jsx

此时可使用git rm --cached来取消对重命名之前的文件跟踪

git rm --cached src/views/Settings/TagSet/TagDialog.jsx
rm 'src/views/Settings/TagSet/TagDialog.jsx'

取消跟踪后,使用git status查看,就会发现这个文件自动添加到删除中了:

~ git rm --cached src/views/Settings/TagSet/TaDialog.jsx
rm 'src/views/Settings/TagSet/TagDialog.jsx'

~ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	deleted:    src/views/Settings/RuleSet/RuleDialog.jsx
	deleted:    src/views/Settings/TagSet/TagDialog.jsx
	modified:   src/views/settings/RuleSet/RuleDialog.jsx
	modified:   src/views/settings/TagSet/TagDialog.jsx

7. 切换分支报错:有文件未跟踪

当我切换分支的时候,出现如下错误信息:

~ git co develop
error: The following untracked working tree files would be overwritten by checkout:
	src/data-map/components/atlas-left-Catalog/index.jsx
Please move or remove them before you switch branches.

这个文件是不存在的,我之前由于修改了文件夹名大小写并提交了代码,到这这个文件不存在,使用git rm --cached无效,

在网上搜索解决方法:

# 删除 一些 没有 git add 的 文件
git clean -d -fx

git clean 参数 
    -n 显示将要删除的文件和目录;
    -x -----删除忽略文件已经对git来说不识别的文件
    -d -----删除未被添加到git的路径中的文件
    -f -----强制运行

这个命令会删除所有没被add的文件,使用命令后就删除了node_modules等文件夹,所有使用需谨慎,

我使用这个命令后,并没有解决问题,后来我删除了项目,从新clone一个项目,安装后,在切换分支就好了,

所以可以尝试删除项目,然后从新安装,或者直接从现有的项目中把node_modules文件夹复制过来

8. gitlab保护分支,导致本地git push -f报错

产生原因:服务器提交了错误或者无用的代码,本地回滚代码,然后把代码强推到服务器上,由于gitlab上有分支保护导致代码推送失败:

git push origin master -f
Total 0 (delta 0), reused 0 (delta 0)
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To http://git.baijiahulian.com/yunying/bi-fe.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'http://git.baijiahulian.com/yunying/bi-fe.git'
  • 在gitlab上查看保护的分支

    在gitlab上打开项目,点击Repository, 然后点击Branches,就能看见所有分支,在分支名字后面有个绿色的protected就是保护分支。

  • 关闭gitlab上的保护分支(需要项目的master或者Owner)

    点击项目右上角(用户logo下面)的小齿轮,选择Protected Branches,在打开的页面里面就能看见保护的分支了,然后点击保护分支右边的Unprotect,就能删除对这个分支的保护了。

  • 开启gitlab上的保护分支(需要项目的master或者Owner)

    点击项目右上角(用户logo下面)的小齿轮,选择Protected Branches, 在Protect a branch中输入分支名字,选择对应权限,然后点击Protect,就会立刻添加一个保护分支了。

9. git rm --cached 报错:recursively without -r

当需要取消一个文件夹跟踪时,报错:

git rm --cached src/css/common/theme/

fatal: not removing 'src/css/common/theme/' recursively without -r

根据网络查找资料,是说这个文件夹需要递归取消跟踪列表里的文件

在命令加上-f即可:

git rm -r --cached src/css/common/theme/
rm 'src/css/common/theme/graph/graph-var.less'
rm 'src/css/common/theme/graph/graph-var.scss'

10. GIT添加空文件夹到项目.gitkeep

因为git空目录无法add。如果想add一个空目录,则需要在它下面创建一个文件。

这个算设计失误吧,好多项目还得弄个假文件在空文件夹里面占位。
大概是linus一开始就把快照设计成只有文件组成,后来想想要改太难,就算了吧。反正你们可以用假文件来占位(oh,so linux!),为什么要linus亲自实现它。

解决办法是在空文件夹下创建一个.gitkeep文件,然后添加这个文件即可

11. git clone early EOF error 的解决方式

https://www.jianshu.com/p/189fd3c9d0ac

1、在我遇到的这个错误的原因应该是文件太大,解决方式为git添加 compression 配置项:

~ git config --global core.compression -1

compression 是压缩的意思,从 clone 的终端输出就知道,服务器会压缩目标文件,然后传输到客户端,客户端再解压。取值为 [-1, 9],-1 以 zlib 为默认压缩库,0 表示不进行压缩,1…9 是压缩速度与最终获得文件大小的不同程度的权衡,数字越大,压缩越慢,当然得到的文件会越小。

2、可以增加git的缓存大小

~ git config --global http.postBuffer 1048576000

将http.postBuffer设置的尽量大,例如git config --global http.postBuffer 524288000 (500M)
git config --global http.postBuffer 1048576000 (1G)。再大的应该是依次类推吧
因为下载的时候不止是工程数据,还有其它配置数据,总量会大于工程数据量,所以设置的缓存大小一定要比工程大小多一些。

3、配置git的最低速和最低速时间

git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999 单位 秒

12. git命令报错:xcrun: error: invalid active developer path

我的系统是Mac系统,由于我对Mac系统进行了升级,Mac系统升级到了Mojave 10.14.6

然后,使用git命令后,报错:

~ git st
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

经过网络查找:https://www.jianshu.com/p/50b6771eb853

需要安装重装xcode command line,终端输入如下命令:

xcode-select --install

如果没有解决问题,执行以下命令

sudo xcode-select -switch /

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

13. git pull报错:fatal: refusing to merge unrelated histories

当使用git pull拉取代码的时候报错:

fatal: refusing to merge unrelated histories

经过翻译:拒绝合并无关的历史

错误原因:其实这个问题是因为 两个 根本不相干的 git 库, 一个是本地库, 一个是远端库, 然后本地要去拉取代码, 本地库觉得远端库跟自己不相干, 所以告知无法合并。

解决办法,强制拉取合并:

git pull --allow-unrelated-histories

git pull origin master --allow-unrelated-histories

--allow-unrelated-histories :把两段不相干的 分支进行强行合并。

由于两个版本不相干,强制拉取下来后会有很多冲突,如果确定本地的分支不需要了,那么可以删除本地分支,然后在拉取远程分支。

此问题参考:https://blog.csdn.net/Websphere_zxf/article/details/90475875

14. 码云仓库上提示代码仓库存储超过500MB

在把代码推送到码云上时,提示代码仓库使用空间超过500MB了, 但是经过查看本地文件大小,发现代码仓库并没有那么大,经过新建仓库,然后把代码推送到新仓库后发现代码并没有那么大,经过查找,需要清理存储库GC

查看码云仓库控使用空间:打开码云仓库 -> 页面右边 star下面的服务按钮 -> 里面有仓库大小显示。

清理存储库GC:打开码云仓库 -> 页面右边 star下面的管理按钮 -> 左边选择存储库GC -> 点击 存储库GC 按钮清理

也可以在管理页面,选择清空仓库,然后从新把代码推动到仓库中。

15. git status 提示:Permission denied

当使用git status命令时,终端报如下错误:

$ git status
warning: could not open directory 'csic-vue/src/api/mixin/': Permission denied
warning: could not open directory 'csic-vue/src/components/ci-file-upload/': Permission denied

在网上查找资料:

https://github.com/vuejs/vue-cli/issues/1809

可尝试使用如下命令:

npm cache clear --force
sudo npm cache clear --force

16. git忽略本地已存在文件的修改

1、将文件修改忽略

git update-index --assume-unchanged 带路径的文件名

2、取消文件忽略

git update-index --no-assume-unchanged 带路径的文件名

17. git pull报错:error: cannot lock ref…unable to resolve reference…reference broken

当使用git pull拉取远程仓库代码是报错:

$ git pull

error: cannot lock ref 'refs/remotes/origin/master':
    unable to resolve reference 'refs/remotes/origin/master': reference broken

From bitbucket.org:xx/mkyong-tutorials
 ! [new branch]      master     -> origin/master  (unable to update local ref)  

问题原因:

原因是你这个git工程的.git/refs目录下跟踪的某些git分支,在git pull的时候,与远端的对应分支的refs对比发现不同,所以导致git pull报错。

通常产生这个问题的原因是(以分支git/yousa/feature_01为例):

1、有人操作这个分支,在git push的时候使用了git push –force,导致远端分支被覆盖,你本地的refs与远端无法一致,导致问题。
2、git分支是不区分大小写的,如果有人删除掉这个远端分支又重新新建了一个这个分支也会出现同样的问题。

解决办法:

根据问题的原因,解决的思路:

1、强行拉取远程代码,执行git pull -p,这种可能会导致本地提交内容被删除掉。

2、删除掉有问题的refs,再进行git pull(以分支master为例)

可以直接在.git/refs下面根据错误提示删除对应的refs文件,比如上面报错就是需要删除refs/remotes/origin/master文件(嫌麻烦直接删除整个refs目录也行)

  • 使用git命令删除相应refs文件:

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

  • 使用终端命令直接删除这个文件,如下方式:

    $ rm .git/refs/remotes/origin/master
    
    $ git fetch
    
     From bitbucket.org:xx/mkyong-tutorials
        df0eee8..3f7af90  master     -> origin/master
    
    $ git pull
     Already up to date.
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1788610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3. redis常见部署架构

redis常见部署架构 一、redis常见部署架构1、常见部署架构2、多实例部署2.1 规划安装目录、配置文件2.2.2 编辑实例配置文件2.2.3 启动实例2.2.4 测试数据读写 3、redis主从复制3.1 规划3.2 从服务器配置3.3 验证主从状态3.4 主从角色切换 4、分片集群4.1 原理4.2 分片集群的部…

completefuture造成的rpc重试事故

前言 最近经历了一个由于 completefuture 的使用&#xff0c;导致RPC重试机制触发而引起的重复写入异常的生产bug。复盘下来&#xff0c;并非是错误的使用了completefuture&#xff0c;而是一些开发时很难意识到的坑。 背景 用户反馈通过应用A使用ota批量升级设备时存在概率…

美容美发门店收银管理系统源码分享-美业系统App端闪退怎么办?

美业SaaS系统 连锁多门店美业收银系统源码 多门店管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 活动促销 PC管理后台、手机APP、iPad APP、微信小程序 ▶ 手机App应用闪退怎么办&#xff1f;博弈美业系统为例 • 可能原因&#xff1a; 1、手机版本过低 2、未更新…

第二证券炒股技巧:短线炒股技巧?

在股票商场上&#xff0c;出资者分为长线和短线这两大类&#xff0c;其间短线炒股存在以下技巧&#xff1a; 1、早盘集合竞价时间上的技巧 早上集合竞价对短线出资者来说比较重要&#xff0c;其间早上集合竞价期间9&#xff1a;15-9:20之间出资者能够进行撤单操作&#xff0c…

Spring boot集成通义千问大模型实现智能问答

Spring boot集成通义千问大模型实现智能问答 背景 我在用idea进行java开发时发现了通义灵码这款免费的智能代码补全插件&#xff0c;用了一段时间了&#xff0c;感觉很不错。就想着在自己的项目中也能集成通义千问大模型实现智能回答&#xff0c;毕竟对接openai需要解决网络问…

【WEEK15】 【DAY1】异步任务【中文版】

2024.6.3 Monday 目录 17.异步、定时、邮件任务17.1.异步任务17.1.1.新建springboot-09-test项目17.1.2.创建一个service包17.1.2.1.创建一个类AsyncService 17.1.3.编写controller包17.1.3.1.编写AsyncController类 17.1.4.运行Springboot09TestApplication.java17.1.5.修改S…

Python课设-学生信息管理系统

一、效果展示图 二、前端代码 1、HTML代码 <1>index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

【Unity美术】spine软件的使用—2D动画的制作

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

通用代码生成器应用场景四,跨编程语言翻译

通用代码生成器应用场景四&#xff0c;跨编程语言翻译 如果您有一个Java工程&#xff0c;想把它移植到Rust或Golang语言中去&#xff0c;希望尽可能加快研发速度。 如果您的系统是通用代码生成器开发的&#xff0c;保留了系统的SGS源文件或者SGS2的Excel模板&#xff0c;您可…

Flink的简单学习(kafka)三

一 Kafka的介绍 1.kafka是一个高吞吐的分布式消息系统&#xff0c;是一个消息队列。 2.生产者负责生产数据 &#xff0c;消费者负责消费数据 3.特点&#xff1a; 生存者消费者模型&#xff0c;FIFO 高性能&#xff1a;单节点支持上千个客户端&#xff0c;百MB/s吞吐 持久…

Pycharm创建Conda虚拟环境时显示CondaHTTPErOT

原因&#xff1a;conda源出问题了&#xff0c;之前可以用&#xff0c;现在报错。 最好的解决方案&#xff1a;找到conda源&#xff0c;换源即可。 步骤&#xff1a; 1.修改 .condarc 文件&#xff08;文件的位置在&#xff1a;C:\Users\(你的用户名)\.condarc&#xff09;&a…

关于认证协议

本地用户认证 本地认证的意思就是&#xff0c;我们的电脑上存储着自己的账号密码&#xff0c;无论电脑是否联网&#xff0c;只要能开机&#xff0c;就可以输入账号密码登录到电脑中&#xff0c;工作组就是采用本地认证 本地认证流程 winlogon.exe -> 接收用户输入 -> …

基于深度学习的中文标点预测模型-中文标点重建(Transformer模型)【已开源】

基于深度学习的中文标点预测模型-中文标点重建&#xff08;Transformer模型&#xff09;提供模型代码和训练好的模型 前言 目前以深度学习对文本自动添加标点符号研究很少&#xff0c;已知的开源项目并不多&#xff0c;详细的介绍就更少了&#xff0c;但对文本自动添加标点符号…

AVL树的介绍与实现

前言 我们上一期介绍了二叉搜索树并做了实现&#xff0c;本期我们来继续学习另一个更优的树即AVL树&#xff01; 本期内容介绍 什么是AVL树&#xff1f; AVL树的实现 AVL树的性能分析 在正式的介绍AVL树之前&#xff0c;我们先来回忆一下二叉搜索树的特点&#xff1a;左子树的…

专业好用的屏幕捕获工具

一、简介 1、一款功能全面、操作简便的屏幕捕获工具,它不仅支持常规的截屏功能,还包括了录屏、OCR文字识别、翻译、GIF制作等多项实用功能。该软件适用于Windows操作系统,旨在为用户提供一站式的屏幕捕捉解决方案 二、下载 1、下载地址: 官网链接:https://verycapture.com…

第二十七章HTML.CSS综合案例

1.产品介绍 效果图如下&#xff1a; 代码部分如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

【UnityShader入门精要学习笔记】第十七章 表面着色器

本系列为作者学习UnityShader入门精要而作的笔记&#xff0c;内容将包括&#xff1a; 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更&#xff0c;有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 表面着色器…

274 基于matlab的随机粗糙表面对微气体轴承内气体压强分布的影响

基于matlab的随机粗糙表面对微气体轴承内气体压强分布的影响。采用差分法求解气体轴承的雷诺方程&#xff0c;通过尺寸参数、分形维数对粗糙度表面设置&#xff0c;滑流参数设置&#xff0c;实现气压分布可视化结果显示。程序已调通&#xff0c;可直接运行。 274 气体轴承 随机…

SpringCloud-面试篇(二十三)

&#xff08;1&#xff09;SpringCloud常见组件有那些 有无数微服务需要相互调用&#xff1a;可以用远程调用组件OpenFeign组件&#xff0c;也可以用Dobble 这么多微服务相互调用怎么管理&#xff1a;就用到注册中心组件Nacos&#xff0c;Eureka 所有的服务去找注册中心做注…

【Vue3-Element-Admin 动态路由】涉及到的配置

Vue3-Element-Admin 动态路由 涉及到的配置 0. Vue3-Element-Admin 项目地址1. router/index.ts2. Mock接口模拟数据3. store/permission4. api/menu5. plugins/permission 这篇文章讲的主要是 Vue3-Element-Admin 差不多内置的动态路由配置 (根据后端接口渲染) 先把开发环境&a…