Back

修复 Git 中本地与远程之间缺失的文件:分步指南

修复 Git 中本地与远程之间缺失的文件:分步指南

您是否发现文件在本地分支中存在,但在远程仓库中却不存在?您可能遇到了 .gitignore 问题或其他跟踪问题。当某些路径列在 .gitignore 中时,Git 不会跟踪这些文件,导致您推送到远程时这些文件会缺失。

关键要点

  • .gitignore 可能会隐藏重要文件,阻止它们被推送。
  • .gitignore 中使用 ! 规则来允许特定文件或文件夹。

为什么 Git 中的文件会缺失

.gitignore 可以包含告诉 Git 跳过目录或文件模式的规则。如果这些目录或文件很重要——比如图像、日志或配置文件——它们将不会被提交或推送,导致远程分支上出现文件缺失

常见的 .gitignore 问题

例如:

// inside the .gitignore file
public/files

这会忽略 public/files/ 内的所有内容。那里的任何文件或文件夹都不会被提交,导致 .gitignore 文件缺失问题。

如何修复 Git 中缺失的文件

步骤 1:检查文件是否被忽略

如果文件在本地存在但在远程缺失,查看 .gitignore 是否忽略了它:

git check-ignore -v public/files/data.json

如果命令引用了 .gitignore,则该文件被忽略。

步骤 2:调整 .gitignore 规则

您可以允许特定文件夹或文件:

public/files
!public/files/documents/
!public/files/logs/
  • public/files 忽略整个文件夹。
  • !public/files/documents/!public/files/logs/ 允许跟踪这些子文件夹。

步骤 3:清除缓存的被忽略文件

如果文件之前被跟踪或在索引中:

git rm -r --cached public/files

这会将它们从 Git 的索引中移除(不会从您的本地机器中删除),以便新规则可以生效。

步骤 4:重新添加允许的文件

清除缓存后:

git add public/files/documents/ public/files/logs/
git commit -m ""Re-adding important files""
git push origin main

步骤 5:验证远程仓库中的文件

使用:

git ls-tree -r origin/main --name-only | grep ""public/files/""

如果它们显示出来,问题已解决。

结论

当面对 Git 中本地与远程之间缺失的文件,特别是由于 .gitignore 规则导致的问题时,更新您的忽略模式并重新添加必要的文件可以解决问题。按照这些步骤确保关键资产不会被悄悄忽略。

常见问题

不会。'git rm -r --cached' 只是从 Git 的索引中移除它们,而不会从您的本地机器中删除。

使用 'git check-ignore -v [路径]'。它会显示哪条规则正在忽略该文件。

是的。在 .gitignore 中使用 '!文件名' 模式。如果需要,您可以使用 'git add -f' 强制添加文件。

Listen to your bugs 🧘, with OpenReplay

See how users use your app and resolve issues fast.
Loved by thousands of developers