Git merge时遇到的坑

本文通过一个实例演示了在Git操作中如何出现意外的合并结果,特别是当被删除的代码在后续提交中重新出现的情况。文章详细解释了Git如何判断合并冲突,并提供了解决此类问题的最佳实践。

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

之前有了一次凌乱的git提交经历,虽然最后还是将代码成功合并了,但是最后还是踩了一个坑。
历史commit中被下掉的代码居然出现在了最终的commit中。。

猜想可能是下面的流程:
- 之前提交mr的时候把原本要下掉的代码提交到远程分支,
- 后来觉得代码有问题,本地reset到上个commit,然后把老代码下掉,增加新代码
- 再次提交时,由于两次修改的地方不一样,因此git判断没有冲突
- 最终提交后,git保留了两次修改的部分。。。

为了验证,我们可以做一个小实验:
新建一个git仓库

mkdir git-test
cd git-test
git init

新增一个文件README.md,输入以下内容:

start

line

end

将此作为一个提交:

git add .
git commit -m "git init"

初始化完成,我们先增加一行代码,将README.md修改为

start
add line #这是第一次修改的内容
line

end

提交

git add .
git commit -m "version a"

这个过程相当于之前的老代码提交到远程分支的过程

之后我们checkout一个分支,当作我们的本地分支

git checkout -b local

此时我们要回退到上个版本,并将老代码下掉,增加新代码

git reset HEAD^ --hard

编辑README.md

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值