抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

最近新建了两个 GitHub 仓库,以前写程式码一直不规范,现在终于学会了 .gitignore 的正确用法,发现很实用。

本文假设你已经配置好 Git 并完成了基础设定(使用者名称、邮箱等)。下面分步骤介绍:

  • 如何将本地专案推送到远端仓库
  • .gitignore 的常用语法与常见问题的修正方法

一、将本地专案推送到远端仓库

首先进入本地专案目录,然后依次执行以下命令:

1
2
3
4
5
6
7
8
9
10
11
cd github/test               # 进入你的专案资料夹

git init

git add .
git commit -m "first commit"

git remote add origin https://github.com/username/test.git

git branch -M main
git push -u origin main

执行完毕后,就完成了第一次推送 ✅


二、.gitignore 语法与规则

.gitignore 用于告诉 Git 哪些档案或资料夹不需要被跟踪。常用语法示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 忽略所有 .log 档案
*.log

# 但保留根目录下的 important.log
!important.log

# 忽略任意位置下的 build/ 目录
build/

# 只忽略根目录下的 target 目录(不是子目录里的 target)
/target/

# 忽略任意深度的 .temp 资料夹
**/.temp/

# 忽略所有 .class 档案
*.class

# 忽略 .idea 目录及其所有内容
.idea/

# 忽略 .env 档案
.env

💡 关键点.gitignore 中的路径是相对于该档案所在的位置。通常我们把 .gitignore 放在专案根目录,那么规则就相对于根目录。


三、两种常见场景的处理

✅ 场景1:推送前已经写好 .gitignore

这是最理想的情况。你只需要正常 git add .git commitgit push,被 .gitignore 匹配的档案就不会进入仓库。

⚠️ 场景2:推送后才发现有不该上传的档案

例如你误把 node_modules/.env 或编译产物推送到了远端仓库。

方法一:仅从 Git 跟踪中删除(保留本地档案,且历史记录中不再包含)

操作步骤:

  1. 编辑 .gitignore,加入需要忽略的规则(比如 node_modules/)。
  2. 清除 Git 索引中匹配的档案,但保留本地档案:
    1
    2
    3
    4
    5
    # 如果是单个档案
    git rm --cached 档名

    # 如果是整个资料夹(注意 -r 递回)
    git rm --cached -r 资料夹名
  3. 提交并推送:
    1
    2
    git commit -m "stop tracking ignored files"
    git push

这样,远端仓库中该档案/资料夹会被删除,但本地依然存在,并且之后不会再被误提交。

方法二:彻底重写历史(慎用!)

🚨 该方法适用于单人在个人分支上确实需要将敏感档案从所有历史提交中彻底删除的情况。它会改变 commit 历史,不适合多人协作的仓库

一种相对安全的方式是使用 git filter-branchgit filter-repo(这里不展开,因为对初学者风险太高)。
简单粗暴的 git reset --hard <旧commit> + git push -f丢失该 commit 之后的所有工作不推荐

如果你真的需要彻底清除历史中的某个档案,请搜寻 “git remove file from history” 并仔细评估风险。


总结

  • 💡 养成好习惯:在第一次 git add 之前就写好 .gitignore
  • 🛠 如果不小心提交了多余的档案,用 git rm --cached 补救,不要轻易强制推送
  • 📁 .gitignore 规则是相对于它自身所在目录的,记住这一点可以避免奇怪的匹配问题。

评论



Powered by Hexo | Theme keep Volantis

本站总访问量 总访客数 🌎