git合并commit以及注意事项

问题描述

今天在写代码的时候由于一时的疏忽,少写了一行代码未提交结果。
前端发现没有此信息,检查代码发现少提交了一行,在提交发现一行代码就要
占用一个commit,UUUU这对于我看commit来说很麻烦,于是想有没有可以
合并commit的操作呢,粗略的找到了此方法

此操作使用的是rebase操作代码哪里写的不对,请联系我补充下,万分感谢

如何合并commit记录分两种情况

第一种:commit记录已经提交
如果代码已提交,问题就比较麻烦了,因为已经提到到了远程仓库
合并commit操作提交将会导致,本地的commit ID比远程的低,就需要强制
push上去,废话不多说,上代码

git add .
git commit -m '修改操作1'
git push

git add .
git commit -m '修改操作2'
git push

git add .
git commit -m '修改操作3'
git push

此操作已经提交了三次,先使用rebase合并分支
使用 git lg 命令获取需要合并到最远的一次提交记录


* 06d70b5 - (HEAD -> master, origin/master, origin/HEAD) 第七次提交测试合并功能 (37 分钟前) <李明尚>
* 8a16330 - 第五次提交代码 (39 分钟前) <李明尚>
* b2a8406 - 第四次提交 (49 分钟前) <李明尚>
* 343bbb5 - 第三次提交 (50 分钟前) <李明尚>
* b164cfc - 去掉.ide文件夹a (2 小时前) <李明尚>
* b28e21c - 增加忽略文件 (2 小时前) <李明尚>
* aedbc17 - 修改 (2 小时前) <李明尚>
* edbfa51 - 修改 (2 小时前) <李明尚>
* a46f21d - Add readme.md (2 小时前) <李明尚>

 
git rebase -i 343bbb5

返回内容如下

pick b2a8406 第四次提交
pick 8a16330 第五次提交代码
pick 06d70b5 第七次提交测试合并功能

# 变基 343bbb5..06d70b5 到 343bbb5(3 个提交)
#
# 命令:
# p, pick <提交> = 使用提交
# r, reword <提交> = 使用提交,但修改提交说明
# e, edit <提交> = 使用提交,进入 shell 以便进行提交修补
# s, squash <提交> = 使用提交,但融合到前一个提交
# f, fixup <提交> = 类似于 "squash",但丢弃提交说明日志
# x, exec <命令> = 使用 shell 运行命令(此行剩余部分)
# b, break = 在此处停止(使用 'git rebase --continue' 继续变基)
# d, drop <提交> = 删除提交

将如下修改
pick b2a8406 第四次提交
squash 8a16330 第五次提交代码
squash 06d70b5 第七次提交测试合并功能

无法使用最新的提交记录,git无法基于最新的忽略老的commit,请注意
然后使用:wq保存

然后改一下提交记录:

# 这是一个 3 个提交的组合。
# 这是第一个提交说明:
#########  此处是你要保留的注释   ######### 
# 这是提交说明 #2:
#########  此处是你要保留的注释   ######### 
# 这是提交说明 #3:
#########  此处是你要保留的注释   ######### 

继续:wq保存

好了你的 git lg 已经没有上几个记录了
* 45ee009 - (HEAD -> master) 第四次提交 (2 分钟前) <李明尚>
* 343bbb5 - 第三次提交 (57 分钟前) <李明尚>
* b164cfc - 去掉.ide文件夹a (2 小时前) <李明尚>
* b28e21c - 增加忽略文件 (2 小时前) <李明尚>
* aedbc17 - 修改 (2 小时前) <李明尚>
* edbfa51 - 修改 (2 小时前) <李明尚>
* a46f21d - Add readme.md (2 小时前) <李明尚>

不过,此时候的commit是老的,无法提交代码,需要强制提交代码
### 如果协同开发,请注意注意注意:你的push -f会导致其他人的版本和你的冲突
### 请自行阅读上片文档,或自行查询资料解决
git push -f
第二种:commit记录未提交 未提交就简单了
方法1、
git commit --amend -m '提交注释'
此方法只适用于本次修改的内容给上一次的commit,
另外此命令也可以修改本次提交的注释内容

方法2
git add .
git commit -m '修改操作1'

git add .
git commit -m '修改操作2'

git add .
git commit -m '修改操作3'

此操作已经提交了三次,先使用rebase合并分支
使用 git lg 命令获取需要合并到最远的一次提交记录


* 06d70b5 - (HEAD -> master, origin/master, origin/HEAD) 第七次提交测试合并功能 (37 分钟前) <李明尚>
* 8a16330 - 第五次提交代码 (39 分钟前) <李明尚>
* b2a8406 - 第四次提交 (49 分钟前) <李明尚>
* 343bbb5 - 第三次提交 (50 分钟前) <李明尚>
* b164cfc - 去掉.ide文件夹a (2 小时前) <李明尚>
* b28e21c - 增加忽略文件 (2 小时前) <李明尚>
* aedbc17 - 修改 (2 小时前) <李明尚>
* edbfa51 - 修改 (2 小时前) <李明尚>
* a46f21d - Add readme.md (2 小时前) <李明尚>

 
git rebase -i 343bbb5

返回内容如下

pick b2a8406 第四次提交
pick 8a16330 第五次提交代码
pick 06d70b5 第七次提交测试合并功能

# 变基 343bbb5..06d70b5 到 343bbb5(3 个提交)
#
# 命令:
# p, pick <提交> = 使用提交
# r, reword <提交> = 使用提交,但修改提交说明
# e, edit <提交> = 使用提交,进入 shell 以便进行提交修补
# s, squash <提交> = 使用提交,但融合到前一个提交
# f, fixup <提交> = 类似于 "squash",但丢弃提交说明日志
# x, exec <命令> = 使用 shell 运行命令(此行剩余部分)
# b, break = 在此处停止(使用 'git rebase --continue' 继续变基)
# d, drop <提交> = 删除提交

将如下修改
pick b2a8406 第四次提交
squash 8a16330 第五次提交代码
squash 06d70b5 第七次提交测试合并功能

无法使用最新的提交记录,git无法基于最新的忽略老的commit,请注意
然后使用:wq保存

然后改一下提交记录:

# 这是一个 3 个提交的组合。
# 这是第一个提交说明:
#########  此处是你要保留的注释   ######### 
# 这是提交说明 #2:
#########  此处是你要保留的注释   ######### 
# 这是提交说明 #3:
#########  此处是你要保留的注释   ######### 

继续:wq保存

好了你的 git lg 已经没有上几个记录了
* 45ee009 - (HEAD -> master) 第四次提交 (2 分钟前) <李明尚>
* 343bbb5 - 第三次提交 (57 分钟前) <李明尚>
* b164cfc - 去掉.ide文件夹a (2 小时前) <李明尚>
* b28e21c - 增加忽略文件 (2 小时前) <李明尚>
* aedbc17 - 修改 (2 小时前) <李明尚>
* edbfa51 - 修改 (2 小时前) <李明尚>
* a46f21d - Add readme.md (2 小时前) <李明尚>

此处只需要git push 就可以了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值