【Git】合并分支后看不到最新的提交日志

实际问题

master合并分支后看不到最新提交日志

总结为:No-FastForward方法失效(master合并分支后看不到最新提交日志),到底是发生了什么??

这是Git的对master分支的优化管理问题

我在实现Springboot图书管理系统的时候,首次使用了dev分支上更新在合并,一路上都很顺利,直到在push的时候遇到了隐藏的问题:

我在dev分支上提交了最新的一次代码,且比master领先一个版本,在master分支使用–no-ff合并后出现了问题:在master分支上的提交,本地与远程的仓库上都没看到master的日志,显示的是dev分支上的日志

为了区分,我将dev​分支的commit日志写为“md spring book”,master合并后的commit日志为“new bookproject”,执行顺序是:

  1. git checkout -b dev
  2. 在dev分支上 ——> commit -m “md spring book”
  3. 切回master分支:git checkout master
  4. git merge –no-ff -m “new bookproject” dev
  5. git push origin master

可以看到我是用了–no-ff方式来提交,正常来说是可以看到master的"new bookproject"日志,但现在是:

在这里插入图片描述

查看log日志树:git log --graph --oneline --all --decorate

在这里插入图片描述

所以实际发生是master​提交了一个和 book 一样的 commit,而不是 merge。push的也是master最新的commit,内容和dev分支很相似,但没有实际merge到

那为什么看起来像是已经合并了

  • md spring book 在 book 做过一次
  • 后来 master 上你也做了一个 相同 commit 提交

Git认为你这是一次没必要的提交,所以直接快进master主线,即使是使用了--no-ff,状态图所示

在这里插入图片描述

在这里插入图片描述

如果需要禁止 fast-forward(最推荐),使用no-ff(强制产生merge commit)

  • 🤗可全局配置:git config --global merge.ff false
  • 或手动制造分叉(先让master​领先分支版本,这样用git merge --no-ff就能生效)

📌 最后一句总结

你不是命令用错,而是 master 与 book 没形成分叉点,导致 --no-ff 没有发挥作用,Git 直接快进了。

推送 dev 到远程(非常重要)

后续建议:

  • 如果分支重要、且长期开发、需要备份、需要协作的情况下,可以推远程仓库托管分支代码

    首次推:git push -u origin dev​,带 -u 后,Git 记住这个分支和远程关联。

    后续推:git push

  • 如果分支只是在本地临时测试、本地用、本地删除,则可以不用推远程~

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值