如何向Git分批推送提交?保留上游仓库历史遇操作难题
分批推送Git提交到新仓库(保留完整历史)
前置准备
先在命令行(推荐用Git Bash或PowerShell)里关联你的新远程仓库:
git remote add new-origin <你的新仓库Git地址>
步骤1:确定起始提交哈希
执行以下命令查看简洁版提交历史,找到你要开始推送的最早提交的短哈希(比如abc123):
git log --oneline
步骤2:分批推送(适配Windows系统)
以每次推送50个提交为例,在PowerShell中执行以下操作循环推送:
- 获取当前批次的最后一个提交哈希:
$batchEnd = git rev-list --reverse abc123..HEAD | Select-Object -First 50 | Select-Object -Last 1
- 推送该批次到新仓库的目标分支(假设目标分支是
main):
git push new-origin $batchEnd:main
- 重复前两步,直到
$batchEnd返回空值,说明所有批次已推送完成。
最后收尾推送
如果还有剩余不足50个的提交,直接推送当前分支的最新状态即可:
git push new-origin main
可视化工具替代思路
如果你习惯用可视化工具(比如SourceTree、GitKraken),可以手动选择一段提交范围(按住Shift选起始和结束提交),然后右键选择「Push to...」并指定新仓库的分支,多次重复这个操作直到所有提交推送完成。
内容的提问来源于stack exchange,提问作者Reo Lozzot
相关产品推荐
相关产品推荐

