已经提交到远程的两个commit如何合并为一个提交
问题:
wifi_control分支的代码我想将最近的8d5d5e035a234c31704fa3e77ca4046ded59050f和86b079c3b7d4e68341066cde2e6ffc00b937fad1的提交合并,统一用86b079c3b7d4e68341066cde2e6ffc00b937fad1的commit
1.先确认当前分支和提交历史:
git status --short --branch git log --oneline --decorate -n 20看到当前在 xyc_reapply_wifi_control,并且最顶上的两笔就是:
8d5d5e0 <NEW>:提高wifi控制的速度 86b079c <NEW>:wifi控制相关代码ff22ef4 ...2.因为这两笔都在分支最前面,所以用 soft reset 回到它们之前的基点 ff22ef4:
git reset --soft ff22ef4这一步的效果是:撤销这两个 commit,但保留它们的所有代码改动,并且保持在暂存区。
3.然后用 86b079c 的提交信息重新提交:
git commit -C 86b079c3b7d4e68341066cde2e6ffc00b937fad1-C 的意思是复用这个旧提交的 commit message、author、author date 等信息。
最终生成的新提交是:
8965f5d <NEW>:增加protcol层wifi控制相关代码,便于app设置wifi状态、wifi账号和密码这里有个 Git 机制点:commit hash 是由内容、父提交、作者时间、提交信息等一起算出来的,所以两笔提交合并后,hash 一定会变,不能继续保持原来的 86b079c...。
我这里做到的是“统一使用 86b079c 的提交信息”,不是保留原 hash。
现在远端还保留原来的两笔提交,本地是合并后的一笔,所以后续如果要更新远端,需要:
git push --force-with-lease origin wifi_control

浙公网安备 33010602011771号