git提交拆分问题以及分批推送

问题:

本地master有100个提交未推送到远程master上,一次推送100个提交到gitlab上会报错,所以只能分次提交,但是第60次提交数据大(可能),需要分成2个新提交

解决方法

方法一:

将 Git 全局的 HTTP 推送数据缓冲区大小设置为 524288000 字节(即 500 MB)

shell 复制代码
git config --global http.postBuffer 524288000

注意事项:

如果你推送的文件大小超过了 Git 服务器(如 GitHub、GitLab、Gitee 等)的限制,依然会推送失败

方法二:

第一步:拆分第60次提交

1. 先备份
shell 复制代码
git branch backup-master

如果后续操作搞砸了,你可以随时用 git reset --hard backup-master 恢复到原始状态。

2. 启动交互式变基
shell 复制代码
git rebase -i 19fa4877280e8c6f15805576e1b79e388363a892
注意: 这个哈希值是有问题提交的父提交

例如:想拆分第2次提交,那么这个哈希值就是第1次提交的

这会打开一个文本编辑器,列出了从第2次提交到最后一次所有的提交

在编辑器中,找到第2次提交(注意:由于排列顺序,它大概在列表偏上的位置)。将该行前面的 pick 修改为 edit(或简写为 e):

txt 复制代码
edit f7g8h9i 第2次提交  <-- 把这里的 pick 改成 edit
...
pick e3a1b35 第4次提交
pick a1b2c3d 第5次提交

保存并退出编辑器。Git 会开始执行变基,并在第2次提交处暂停,提示你进行修改

3. 拆分提交

此时,你的工作区停留在第2次提交刚完成的状态。我们需要把这次提交撤销,但保留文件修改,然后分两次重新提交:

a. 回退本次提交,将修改放回工作区:
shell 复制代码
git reset HEAD^

(注意:不要加 --hard,加了会丢失代码修改。此时代码修改会变成"未暂存"状态)

b. 挑选第一批需要提交的文件或代码行:

如果你可以按文件拆分:

sh 复制代码
  git add file1.py file2.py  # 添加属于第一个新提交的文件

如果在同一个文件中,你需要拆分具体的代码行:

sh 复制代码
  git add -p file3.py  # 交互式选择,Git 会逐块询问你是否暂存,输入 y 暂存,n 跳过

c. 创建第一个新提交:

sh 复制代码
git commit -m "第2次提交 - Part 1"

d. 将剩余的修改添加到暂存区并创建第二个新提交:

sh 复制代码
git add .
git commit -m "第2次提交 - Part 2"
4. 继续变基

拆分完成后,让 Git 继续执行剩余的变基过程:

sh 复制代码
git rebase --continue

注意:(如果遇到冲突,解决冲突后执行 git add . 然后 git rebase --continue 即可。)

第二步:分批推送到远程

1. 推送前50个提交

你可以使用本地分支的某个历史提交来指定推送范围。查看前50个提交的哈希值(即当前 HEAD 往前数第51个提交):

假设得到的哈希值是 abcd123,我们将远程 master 快进合并到这个提交:

sh 复制代码
git push origin abcd123:refs/heads/master

这个命令的意思是:把本地 abcd123 这个提交推送到远程的 master 分支。因为它是当前提交的祖先,所以远程会接受,此时远程拥有了前50个提交。

2. 推送剩余的提交

现在远程已经有了前50个提交的基础,你可以直接把本地剩下的提交推上去:

sh 复制代码
git push origin master
相关推荐
敲代码的嘎仔12 小时前
实习日志day6--实习日志day6--title命名规范化&businessType纠正&补充缺失的@Log注解&报警与通信模块补充&产出阶段总结文档
java·开发语言·人工智能·git·python·实习·大二
刘马想放假13 小时前
Git 从入门到进阶:一篇吃透版本管理的实战指南
git·gitlab
开发者联盟league14 小时前
git commit报错No .pre-commit-config.yaml file was found
git
猫老板的豆19 小时前
git实战
git
风曦Kisaki19 小时前
# Linux实战笔记-HIS项目实战Day01:版本控制与Git基础
linux·笔记·git
鲸~屿1 天前
Git上传本地文件到GitHub教学指南
git·github
减瓦2 天前
Windows 环境使用 Git Bash 最佳实践
windows·git
史呆芬2 天前
CodeX多仓库提交Skill搭建
git·后端·openai
城东2 天前
Git使用[原意要新建分支提交但是误提交到原来分支恢复办法]
git·原意要新建分支提交·但是误提交到原来分支