Git工作流问题:为何推送克隆仓库而非仅构建产物?
问题原因与修正方案
你出错的核心是在原克隆仓库的Git环境里操作——原仓库本身带着所有源码文件、提交历史,哪怕你只添加了构建产物,Git推送的是当前分支的完整历史(包括原仓库的全部内容),不是仅你新提交的那部分文件。
正确的单仓库构建产物推送流程
- 先克隆原仓库并完成构建:
git clone <原仓库地址> cd <原仓库目录> # 执行你的构建命令,生成目标可执行文件 - 离开原仓库,新建一个完全空白的目录作为独立Git环境:
cd .. mkdir temp-build-dir cd temp-build-dir git init git remote add new-repo <你的新仓库地址> - 把构建产物复制到这个空白目录,再提交推送:
cp ../<原仓库目录>/<你的产物文件名> ./ git add <你的产物文件名> git commit -m "Add build artifact from <原仓库名称>" git push new-repo main --force
两个仓库产物推送至同一新仓库的流程
- 分别克隆两个仓库,完成构建得到各自的可执行文件(比如repo1产物为app1.exe,repo2为app2.exe)
- 新建空白目录并初始化Git:
mkdir combined-builds cd combined-builds git init git remote add new-repo <新仓库地址> - 复制两个产物到该目录,提交推送:
cp ../repo1/app1.exe ./ cp ../repo2/app2.exe ./ git add app1.exe app2.exe git commit -m "Add build artifacts from repo1 and repo2" git push new-repo main --force
备选方案(不推荐,易误操作)
如果不想新建目录,也可以在原仓库里清空所有历史和文件,只保留构建产物:
cd <原仓库目录> # 谨慎执行:删除原仓库所有文件和Git历史 rm -rf .git * git init git remote add new-repo <新仓库地址> # 把构建产物移回当前目录(如果构建产物在子目录需调整路径) git add <产物文件名> git commit -m "Add build artifact" git push new-repo main --force
内容的提问来源于stack exchange,提问作者Armin
相关产品推荐
相关产品推荐

