如何让GitHub仓库同步删除本地已移除的文件?
如何让Git提交时自动删除仓库中本地已不存在的文件
你遇到的问题是因为git add *只会让Git追踪新增或修改的文件,对于本地已经删除的文件,这个命令不会把删除操作加入暂存区,所以提交后仓库里的文件依然存在。以下是几种解决方法:
方法一:用git add -A追踪所有变化
直接用git add -A替代git add *,它会扫描整个工作区的所有变化,包括新增、修改、删除的文件:
git add -A git commit -m"my changes" git push origin main
执行后,本地已删除的myimg.png会被标记为删除,提交并推送后,仓库里的对应文件也会被移除。
方法二:批量处理已删除的文件
如果只想同步本地删除的文件,可以单独执行以下命令批量处理:
# 标记所有本地已删除的文件为待删除 git rm $(git ls-files --deleted) # 提交删除操作 git commit -m"remove deleted files" git push origin main
如果是单个文件,也可以直接指定文件名:
git rm folder1/myimg.png git commit -m"remove myimg.png" git push origin main
方法三:配置别名简化操作
可以给Git配置一个全局别名,把添加所有变化和提交合并成一步:
git config --global alias.commit-all '!git add -A && git commit'
之后每次提交时,直接用这个别名:
git commit-all -m"my changes" git push origin main
补充说明
git add *的局限性在于,它是通过shell展开当前目录的文件列表,而本地已删除的文件不会被shell包含进去,所以Git无法感知到这些文件的删除操作。而git add -A是让Git直接遍历工作区的所有文件,能准确捕捉到所有类型的变更。
内容的提问来源于stack exchange,提问作者M.Tailleur
相关产品推荐
相关产品推荐

