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
相关推荐
不老刘16 小时前
Antigravity 的 New Worktree 模式:给 AI 代理一个安全的“平行工位”
人工智能·git·ai编程·antigravity
光谱SpectrAI16 小时前
Windows 也中招:Git Bash 和 Node 仍信任泄露的 eMudhra 证书
git
YIN_尹16 小时前
【git原理与使用】git初识与安装
大数据·git·elasticsearch
Leo_Mr21 小时前
Vue3 项目配置 Git 提交规范(企业通用方案:husky + commitlint + cz-git + lint-staged)
git
jyOverQ1 天前
Git rebase 和 merge 有什么区别?什么时候该用哪个?
git
晗夜未央1 天前
跨仓库 Skill 换台电脑就失效?用 Git remote 校验项目
人工智能·git·python
Lsetea1 天前
Git访问HTTPS证书不受信任:用URL级sslCAInfo限定私有CA范围
git·https·开发工具·ssl证书·ca证书
এ慕ོ冬℘゜2 天前
Git 基础入门|和 SVN 对比 + 四大区域 + 常用命令详解
git·svn
DevLoom_2 天前
macOS 命令行 curl/git 报 SSL 证书错误?eMudhra 事件完整修复指南
git·macos·ssl
keyipatience2 天前
Git学习(4)Git分布式优势与实战配置全解析
git·学习