如何仅合并本人推送到GitHub的4个Git提交?
仅合并自己的4个提交的方法
出现这个问题是因为git rebase -i HEAD~4是取当前HEAD往前数4个提交对象,而非你自己的4个提交——如果这段时间有他人提交被合并进来,列表里自然会混进别人的记录。要精准合并自己的4个提交,按以下步骤操作:
定位自己的4个提交哈希
先过滤出自己的提交,执行命令:git log --oneline --author="你的用户名/邮箱"从输出里找到你要合并的4个提交,记下最早的那个提交的哈希值(比如
abc123)。启动交互式变基
基于最早提交的父节点启动变基,这样会包含从该父节点到当前HEAD的所有提交:git rebase -i abc123^调整提交处理规则
在打开的编辑器中,对提交列表做如下修改:- 保留你第一个提交(
abc123)前的pick - 将你另外3个提交前的
pick改成squash(保留提交信息)或fixup(丢弃提交信息,仅保留内容) - 他人的提交全部保持
pick不动,不要修改
示例修改后的列表:
pick xxxx 他人提交A pick abc123 我的提交1 pick yyyy 他人提交B squash def456 我的提交2 squash ghi789 我的提交3 pick zzzz 他人提交C squash jkl012 我的提交4- 保留你第一个提交(
完成合并与推送
保存并退出编辑器后,Git会提示你编辑合并后的提交消息,确认后完成合并。
由于已经推送到远程仓库,需要强制推送更新:git push --force-with-lease(
--force-with-lease比--force更安全,能避免意外覆盖他人的新提交)
注意:如果操作的是公共协作分支,强制推送前请和团队成员沟通,确保没人基于你的旧提交开展工作。
内容的提问来源于stack exchange,提问作者Melissa Guo
相关产品推荐
相关产品推荐

