You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Visual Studio Code大文件提交同步卡住,GitLens回退无效,求解决方法

解决Git Push大文件卡住及彻底移除大文件的方案

第一步:终止卡住的Push操作

先把当前卡住的push进程停掉,几种简单可行的方法:

  • 如果是在VS Code终端里执行的push,直接按 Ctrl+C(Windows/Linux)或 Cmd+C(Mac)就能中断进程;要是终端没反应,直接关掉VS Code的终端标签页就行。
  • 要是终端完全无响应,打开系统的任务管理器(Windows)或活动监视器(Mac),找到所有带git标识的进程,直接结束它们。

第二步:彻底清理大文件的历史记录

你只把文件移到.gitignore里没用——因为这个大文件已经被提交到Git历史中了,push的时候还是会尝试同步这段历史。得把它从所有提交记录里彻底删掉:

  1. 暂存本地未提交的改动(如果有的话):
    执行 git stash,把当前未提交的改动暂存起来,等操作完成后可以用 git stash pop 恢复。
  2. 定位并移除大文件
    官方现在推荐用git filter-repo工具(比旧的filter-branch更可靠),执行以下命令:
    git filter-repo --path 你的大文件名或路径 --invert-paths
    
    如果你忘了大文件的具体路径,可以用下面的命令找出仓库里的大文件:
    git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print$1}')"
    
  3. 强制推送到远程仓库
    清理完历史后,需要强制覆盖远程的分支记录(注意:如果是多人协作的分支,先和队友确认没人在这个分支上工作,避免覆盖别人的改动):
    git push origin 你的分支名 --force
    

第三步:确保后续不再提交该文件

最后把这个大文件的路径加到.gitignore里,执行git add .gitignoregit commit -m "Add large file to gitignore",再push一次就可以了。

关于GitLens回退无效的说明

你用GitLens回退没解决问题,大概率是因为回退的只是本地提交,但你之前的push操作虽然卡住,可能已经向远程传输了部分数据,或者本地的错误提交记录还没彻底清理。按照上面的步骤清理历史后,就能彻底解决问题。

内容的提问来源于stack exchange,提问作者Kevin Danikowski

火山引擎 最新活动