之前有了一次凌乱的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 #这是第一次修改的内容
lineend
提交
git add .
git commit -m "version a"
这个过程相当于之前的老代码提交到远程分支的过程
之后我们checkout一个分支,当作我们的本地分支
git checkout -b local
此时我们要回退到上个版本,并将老代码下掉,增加新代码
git reset HEAD^ --hard
编辑README.md