更新Git笔记和本地忽略文件

This commit is contained in:
2026-06-23 17:45:55 +08:00
parent 5b0f8b9cde
commit b8bbd7d49e
24 changed files with 252 additions and 361 deletions
+112
View File
@@ -42,6 +42,9 @@ https://github.com/Ki5ter/Obsidian.git
`fetch 获取`
只下载远程仓库信息,不自动合并。
`origin/master`
本地记录的远端 `origin``master` 分支的位置。它不是远端本身,而是本地上次获取到的远端状态。
## 基本工作流程
1. 打开工作区,也就是要纳入版本控制的文件夹。
@@ -94,6 +97,36 @@ git push
git pull
```
## origin、master 和 push
`origin` 是远端仓库地址的别名。它保存在本地 Git 配置里,不是 GitHub 天生的名字。
```powershell
git remote add origin https://github.com/Ki5ter/Obsidian.git
```
如果需要推送到多个远端,可以添加多个别名:
```powershell
git remote add backup https://example.com/backup.git
```
`master` 是分支名,也可以叫 `main``dev``notes`。分支可以理解为一个指向最新提交的指针。
```powershell
git push origin master
```
这条命令表示把本地 `master` 分支推送到 `origin` 远端。它不会自动推送其他本地分支。
第一次推送时常用:
```powershell
git push -u origin master
```
`-u` 会设置上游关系。之后在本地 `master` 分支上执行 `git push``git pull`Git 会自动使用 `origin/master`
## 常用检查命令
查看当前仓库状态:
@@ -126,6 +159,73 @@ git remote -v
git log --oneline --decorate -5
```
查看某个路径是否被 ignore 命中:
```powershell
git check-ignore -v --no-index -- "密码本/任意测试文件.md"
```
查看某个路径是否还被 Git 跟踪:
```powershell
git ls-files -- "密码本" "服务器迁移"
```
## .gitignore 的作用
`.gitignore` 用来告诉 Git:哪些未被跟踪的新文件不要加入版本控制。
推荐把只在仓库根目录生效的目录写成:
```gitignore
/密码本/
/服务器迁移/
```
开头的 `/` 表示仓库根目录,结尾的 `/` 表示目录。
如果只写:
```gitignore
密码本
```
也能生效,但它会匹配仓库中任何位置名为 `密码本` 的文件或目录,不如 `/密码本/` 精确。
已经被 Git 跟踪过的文件不会因为加入 `.gitignore` 自动消失。需要执行:
```powershell
git rm --cached -r -- "目录或文件名"
```
这会从 Git 跟踪列表中移除文件,但保留本地实际文件。
## 清理历史中的敏感内容
如果敏感文件已经推送到远程仓库,只在最新提交中删除还不够,旧提交里仍然可能看到。
清理历史的思路是:重写本地提交历史,让每个相关提交都不再包含敏感路径,然后强制替换远端分支。
示例:
```powershell
git filter-repo --path "密码本/" --path "服务器迁移/" --invert-paths
git fetch origin
git push --force-with-lease origin master
```
`git filter-repo` 不是 Git 自带命令,需要单独安装。`--invert-paths` 表示反转路径选择:保留其他所有路径,移除 `--path` 指定的路径。
普通 `git push` 只允许向前追加提交。重写历史后,本地提交 ID 已经变化,远端会拒绝普通 push,因此需要:
```powershell
git push --force-with-lease origin master
```
`--force-with-lease``--force` 更安全。它会检查远端分支是否仍停在本地记录的位置;如果别人已经推送了新提交,它会拒绝覆盖。
敏感信息如果已经泄露过,清理 Git 历史只是补救之一。密码、Recovery Key、Token 等应视为已经泄露,优先更换或吊销。
## Obsidian 笔记库使用 Git 的注意事项
Obsidian 笔记库适合用 Git 备份,因为大多数内容都是 Markdown 文本文件。
@@ -148,6 +248,18 @@ Obsidian 笔记库适合用 Git 备份,因为大多数内容都是 Markdown
特别大的二进制文件
```
建议忽略:
```gitignore
/.obsidian/workspace*.json
/.obsidian/cache/
/.vs/
/密码本/
/服务器迁移/
```
`workspace*.json` 是 Obsidian 的窗口和布局状态,通常和具体电脑有关。`.vs/` 是 Visual Studio 本地缓存,也不适合提交。
如果笔记库在 OneDrive 里,要注意 `.git` 目录必须真实保留在本机。否则 Git 或 Visual Studio 可能会报错,例如:
```text