为何推送至GitHub新仓库时会包含所有历史提交?
问题解决指南
问题1:新仓库推送后包含其他仓库的历史提交
原因
你大概率是在已有Git仓库的文件夹里直接创建新项目,或是复用了带.git文件夹的旧目录作为新项目的本地仓库——Git的所有历史提交都存在根目录的.git文件夹中,只要这个文件夹没删除,新提交就会和旧历史绑定,推送到新远程仓库时自然会带上所有旧提交记录。
解决步骤
- 为每个新项目单独创建空文件夹,不要在已有Git仓库的目录里嵌套新项目
- 进入新文件夹,执行
git init初始化全新的Git仓库 - 将新项目文件放入该文件夹,依次执行:
git add . git commit -m "初始化项目" - 关联GitHub上的新仓库(复制仓库的HTTPS/SSH地址):
git remote add origin [你的新仓库地址] - 最后推送代码:
git push -u origin main
若已在旧仓库里建了新项目,补救方法:
- 把新项目的所有文件复制到一个全新的空文件夹
- 按上面的步骤初始化新仓库、关联远程、推送
- 删除旧仓库里的新项目文件夹,避免后续混淆
问题2:进入新文件夹执行git add无内容可暂存,根目录git add .可以
原因
- Git不追踪空文件夹:如果新文件夹里没有任何文件,执行
git add不会有内容被暂存 - 若新文件夹里有文件,但进入文件夹执行
git add .没反应,大概率是操作时文件夹里确实为空,或是你误将文件放到了其他位置
正确操作
- 添加新文件夹内容的两种有效方式:
- 进入新文件夹,执行
git add .(前提是文件夹内有文件) - 在仓库根目录执行
git add ./新文件夹名称/,精准添加该文件夹下的所有内容
- 进入新文件夹,执行
- 若需Git识别空文件夹,可在空文件夹里创建一个名为
.gitkeep的空文件(这是Git社区通用约定,非强制命令)
内容的提问来源于stack exchange,提问作者urchin55
相关产品推荐
相关产品推荐

