问题描述
今天在写代码的时候由于一时的疏忽,少写了一行代码未提交结果。
前端发现没有此信息,检查代码发现少提交了一行,在提交发现一行代码就要
占用一个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 就可以了