最近新建了两个 GitHub 仓库,以前写程式码一直不规范,现在终于学会了
.gitignore的正确用法,发现很实用。
本文假设你已经配置好 Git 并完成了基础设定(使用者名称、邮箱等)。下面分步骤介绍:
- 如何将本地专案推送到远端仓库
.gitignore的常用语法与常见问题的修正方法
一、将本地专案推送到远端仓库
首先进入本地专案目录,然后依次执行以下命令:
1 | cd github/test # 进入你的专案资料夹 |
执行完毕后,就完成了第一次推送 ✅
二、.gitignore 语法与规则
.gitignore 用于告诉 Git 哪些档案或资料夹不需要被跟踪。常用语法示例如下:
1 | # 忽略所有 .log 档案 |
💡 关键点:
.gitignore中的路径是相对于该档案所在的位置。通常我们把.gitignore放在专案根目录,那么规则就相对于根目录。
三、两种常见场景的处理
✅ 场景1:推送前已经写好 .gitignore
这是最理想的情况。你只需要正常 git add .、git commit 和 git push,被 .gitignore 匹配的档案就不会进入仓库。
⚠️ 场景2:推送后才发现有不该上传的档案
例如你误把 node_modules/、.env 或编译产物推送到了远端仓库。
方法一:仅从 Git 跟踪中删除(保留本地档案,且历史记录中不再包含)
操作步骤:
- 编辑
.gitignore,加入需要忽略的规则(比如node_modules/)。 - 清除 Git 索引中匹配的档案,但保留本地档案:
1
2
3
4
5# 如果是单个档案
git rm --cached 档名
# 如果是整个资料夹(注意 -r 递回)
git rm --cached -r 资料夹名 - 提交并推送:
1
2git commit -m "stop tracking ignored files"
git push
这样,远端仓库中该档案/资料夹会被删除,但本地依然存在,并且之后不会再被误提交。
方法二:彻底重写历史(慎用!)
🚨 该方法适用于单人在个人分支上且确实需要将敏感档案从所有历史提交中彻底删除的情况。它会改变 commit 历史,不适合多人协作的仓库。
一种相对安全的方式是使用 git filter-branch 或 git filter-repo(这里不展开,因为对初学者风险太高)。
简单粗暴的 git reset --hard <旧commit> + git push -f 会丢失该 commit 之后的所有工作,不推荐。
如果你真的需要彻底清除历史中的某个档案,请搜寻 “git remove file from history” 并仔细评估风险。