为何历史commits被重复推送到新分支?VSCode推送问题咨询
Git提交相关问题解析
分支B包含分支A历史提交的原因
- Git分支本质是指向特定提交的轻量指针,当你从分支A创建分支B时,B的起始点就是A当时的最新提交,因此会自动继承A的全部历史提交。
- 推送分支B到远程仓库时,Git必须推送完整的提交链(否则远程无法还原分支的完整历史),所以A的历史提交会被一并推送到远程的B分支下,这是Git的正常工作机制,并非异常。
GitHub网页修改后VSCode推送重复历史提交的原因
- 最常见的原因是本地与远程提交历史分叉:你在GitHub网页直接修改内容后,远程分支会生成新的提交,但本地仓库仍停留在修改前的状态,两者的提交历史不再对齐。
- 若此时未先拉取远程最新提交就直接推送,VSCode可能触发了强制推送(比如你勾选了相关选项),或是Git在处理冲突时用本地历史覆盖了远程历史,导致远程仓库重新展示本地的全部历史提交,看起来像是重复推送。
- 另一种可能是本地分支与远程分支的跟踪关系异常,比如本地分支未正确关联对应远程分支,导致Git无法识别已推送的历史记录,进而重复推送。
内容的提问来源于stack exchange,提问作者Yuxuan Zhang
相关产品推荐
相关产品推荐

