Git能否将修改追加到上一次commit后推送 不新增提交?
技术可行性说明
完全可以实现,你可以通过Git的amend功能将当前改动合并到上一次提交中,不会产生新的commit记录。
具体操作步骤
- 首先将修复后的改动存入暂存区:
单文件操作命令:git add <改动的文件路径>
全量改动操作命令:git add . - 执行提交合并操作:
如果需要修改上一次的提交信息,执行git commit --amend,执行后会进入编辑页调整提交信息即可
如果不需要修改上一次的提交信息,直接执行git commit --amend --no-edit - 推送到远程仓库:
如果你还未将上一次的旧提交推送到远程,直接执行普通推送命令git push即可
如果你已经将上一次的旧提交推送到远程,需要执行强制推送覆盖远程旧记录:git push --force注意:如果当前是多人协作的公共分支,强制推送前请确认其他开发者未基于旧提交做新的改动,否则会导致其他人的本地提交出现冲突。
对git log的影响
- 本地日志层面:旧的上一次提交会被完全替换为新提交,新提交包含旧提交的全部内容+本次新增的修复改动,旧提交的哈希值会失效,git log中只会展示合并后的那一条提交记录,不会出现新增的commit。
- 远程日志层面:如果旧提交未推送过,推送后远程日志和本地完全一致,无任何异常;如果旧提交已推送并完成强制覆盖,远程日志也会同步更新为合并后的单条提交记录。
- 特殊情况:如果有其他开发者已经拉取过旧的提交记录,远程记录被覆盖后,其他人的本地提交历史会和远程产生分叉,需要他们手动执行变基操作同步最新的远程记录,否则后续推送时会把旧提交重新带回远程,产生冗余提交。
内容的提问来源于stack exchange,提问作者tolga
相关产品推荐
相关产品推荐

