碎碎念 - git冲突及解决

本文介绍了解决Git中代码冲突的方法,包括直接覆盖导致的游离分支问题及解决步骤,以及如何使用git stash进行合并修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题: git 冲突

最近在写一个项目,我在公司和家里同时都在修改,有一次两端都修改之后,再git pull 就出现了这样的问题:

error: The following untracked working tree files would be overwritten by merge:
        src/components/Footer.js
        src/components/Sidebar.js
        src/components/home/Tool.js
Please move or remove them before you merge.

其实提示很明确,就是代码冲突,想起来之前处理代码冲突踩过坑,所以记录一下。
代码冲突有两种解决,一个是直接覆盖,一个是合并修改


直接覆盖 —— 出现游离分支

因为有一端的代码不需要,所以我当时直接强制覆盖了,代码很简单

git reset --hard

但等到真提交代码的时候,出现了问题,在这里插入图片描述
为什么出现的我还不是很明白,但是大致问题是代码保存在一个游离分支上。我又去github项目上看了,果然没有新的分支,那基本上确定就是游离的一个分支没错了。

网上的解决思路大致都是新建一个tem的临时分支,再切换到主分支上merge临时分支,push之后删掉临时分支。

解决步骤:

1 查看在游离状态下提交的最新commit号

git branch -v

2.创建一个临时的分支,创建完成之后切换到该分支上查看一下

git branch temp

3.切换到要合并的主分支(因为只有我一个人用,所以是master,具体要看主分支是哪个)

git checkout master

4.合并

git merge temp

5.推送

git push origin master

或者是 git push origin 分支名称:远程分支名称

6.推送成功后删除临时分支

git branch -d temp

git 大小写不敏感

推送成功之后,我又发现了一个git的小问题,标题忽略大小写。
实际上git对文件内的大小写是敏感的,但是对文件名的大小写是不敏感的。

解决方案和问题:

1.设置全局的git大小写敏感

$ git config core.ignorecase false

问题:
这个在一个人的情况下还好,如果在多人协作的情况下,分支B注意大小写,再切回分支A,分支A会重写分支B的文件。

2.设置全局的git大小写敏感
重命名

git mv oldA newB
重命名oldA为newB

问题:
其实也不是什么问题,主要是千万要先备份,删除任何东西前先备份!

合并修改

再回到合并修改,用到git stash

stash是本地的,不会通过git push命令上传到git server上。会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。

git stash

然后可以正常拉取

git pull

如果要恢复缓存

git stash pop

stash是一个缓存栈,后续还可以有各种个样的操作,这里我就一一说明了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值