# .gitignore 使用注意事项:
# 1. 所有的注释只能是独占单行注释,不能在有效代码后注释!否者不生效!比如错误示范:
# 实例: MDK/ #忽略MDK目录下所有内容 (跟在有效代码后注释,非法!!!)
# 2. 注意务必使用 UTF-8 编码格式去编辑 .gitignore 文件。
# .gitignore 使用小提示:
# 1. 提前准备好 .gitignore 文件,再 git init 创建仓,.gitignore规则直接生效;
# 2. 删除MDK下已跟踪的信息:git rm --cached MDK/ -r
# 3. 根据文件夹的排他性,比如.o文件,可以比较检测前后变化,定位变动的.o文件;
# 忽略所有.o文件
*.o
# 忽略MDK目录下所有内容
MDK/
git ignore 语法规则
Pattern Syntax
Here are some common patterns and how they match:
Pattern | Explanation/Matches | Examples |
---|---|---|
Blank lines are ignored | ||
# text comment | Lines starting with # are ignored | |
name | All name files, name folders, and files and folders in any name folder | /name.log /name/file.txt /lib/name.log |
name/ | Ending with / specifies the pattern is for a folder. Matches all files and folders in any name folder | /name/file.txt /name/log/name.log no match: /name.log |
name.file | All files with the name.file | /name.file /lib/name.file |
/name.file | Starting with / specifies the pattern matches only files in the root folder | /name.file no match: /lib/name.file |
lib/name.file | Patterns specifiing files in specific folders are always realative to root (even if you do not start with / ) | /lib/name.file no match: name.file /test/lib/name.file |
**/lib/name.file | Starting with ** before / specifies that it matches any folder in the repository. Not just on root. | /lib/name.file /test/lib/name.file |
**/name | All name folders, and files and folders in any name folder | /name/log.file /lib/name/log.file /name/lib/log.file |
/lib/**/name | All name folders, and files and folders in any name folder within the lib folder. | /lib/name/log.file /lib/test/name/log.file /lib/test/ver1/name/log.file no match: /name/log.file |
*.file | All files withe .file extention | /name.file /lib/name.file |
*name/ | All folders ending with name | /lastname/log.file /firstname/log.file |
name?.file | ? matches a single non-specific character | /names.file /name1.file no match: /names1.file |
name[a-z].file | [range] matches a single character in the specified range (in this case a character in the range of a-z, and also be numberic.) | /names.file /nameb.file no match: /name1.file |
name[abc].file | [set] matches a single character in the specified set of characters (in this case either a, b, or c) | /namea.file /nameb.file no match: /names.file |
name[!abc].file | [!set] matches a single character, except the ones spesified in the set of characters (in this case a, b, or c) | /names.file /namex.file no match: /namesb.file |
*.file | All files withe .file extention | /name.file /lib/name.file |
name/ !name/secret.log | ! specifies a negation or exception. Matches all files and folders in any name folder, except name/secret.log | /name/file.txt /name/log/name.log no match: /name/secret.log |
*.file !name.file | ! specifies a negation or exception. All files withe .file extention, except name.file | /log.file /lastname.file no match: /name.file |
*.file !name/*.file junk.* | Adding new patterns after a negation will re-ignore a previous negated file All files withe .file extention, except the ones in name folder. Unless the file name is junk | /log.file /name/log.file no match: /name/junk.file |
Git Restore 与 Reset --Hard 核心区别
二者都可以丢弃修改,但影响范围和操作层级不同:
对比项 | git restore | git reset --hard |
---|---|---|
作用目标 | 工作区/暂存区 | 工作区/暂存区/提交历史 |
安全级别 | 相对安全 | ⚠️ 高危操作 |
影响范围 | 单个文件/指定路径 | 整个项目 |
历史修改 | 不改变提交历史 | 改变提交历史 |
HEAD位置 | 保持不动 | HEAD指针移动 |
🧩 1. git restore
(现代安全方式)
# 丢弃工作区所有未暂存的修改
git restore .
# 丢弃暂存区的修改(保留工作区修改)
git restore --staged <file>
# 同时丢弃工作区+暂存区修改
git restore --worktree --staged <file>
- 定位:精细控制,仅作用于文件层级
- 特点:不动历史提交,不改变HEAD指针
- 适用场景:撤消本地未提交的修改
💥 2. git reset --hard
(强力清除)
# 丢弃所有未提交的修改(工作区+暂存区)
git reset --hard
# 重置到指定提交(丢弃后续所有提交)
git reset --hard commit_id
- 定位:原子级清除,影响整个仓库状态
- 特点:会改变提交历史,移动HEAD指针
- 危险点:永久删除未提交的代码和未推送的提交
⚖️ 使用场景决策树
🚨 重要提示
- 执行
reset --hard
前务必确认:git status # 查看将被删除的内容
- 已推送的提交避免使用
reset --hard
,会破坏团队协作历史 - 推荐使用
git restore
替代旧版git checkout --
📌 黄金法则:日常修改丢弃用
restore
,历史版本回退用reset --hard
+ 指定commit
同时将本地仓库推送到 GitHub 和 Gitee(码云)
-
查看当前远程配置
git remote -v
-
添加多个远程仓库
# 添加 Gitee git remote add gitee https://gitee.com/mapleay/display_-ic_-demo_-stm32-h743-iit6-ltdc_from-scratch.git # 添加 GitHub git remote add github https://github.com/your_username/your_repo.git #日常同步推送(两种方式) git push gitee main git push github main