更新Git笔记和本地忽略文件
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
当前笔记库路径:
|
||||
|
||||
```text
|
||||
E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes
|
||||
%USERPROFILE%\OneDrive\Apps\remotely-save\MyNotes
|
||||
```
|
||||
|
||||
GitHub 远程仓库:
|
||||
@@ -22,13 +22,13 @@ https://github.com/Ki5ter/Obsidian.git
|
||||
推荐设置成类似:
|
||||
|
||||
```text
|
||||
E:\GitRepos
|
||||
%USERPROFILE%\GitRepos
|
||||
```
|
||||
|
||||
不推荐设置成:
|
||||
|
||||
```text
|
||||
E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes
|
||||
%USERPROFILE%\OneDrive\Apps\remotely-save\MyNotes
|
||||
```
|
||||
|
||||
原因是 `MyNotes` 本身就是一个仓库,不应该再作为所有新仓库的默认存放目录。
|
||||
@@ -52,7 +52,7 @@ URL: https://github.com/Ki5ter/Obsidian.git
|
||||
1. 在资源管理器中找到笔记库文件夹:
|
||||
|
||||
```text
|
||||
E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes
|
||||
%USERPROFILE%\OneDrive\Apps\remotely-save\MyNotes
|
||||
```
|
||||
|
||||
2. 如果笔记库在 OneDrive 里,先右键文件夹,选择:
|
||||
@@ -125,6 +125,24 @@ git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" branch -M main
|
||||
git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" push -u origin main
|
||||
```
|
||||
|
||||
## 不建议提交 .vs 目录
|
||||
|
||||
Visual Studio 会在仓库里生成 `.vs/` 目录,用来保存本机缓存、索引、窗口布局等内容。
|
||||
|
||||
这些文件通常只和当前电脑有关,不适合推送到 GitHub。建议在 `.gitignore` 中加入:
|
||||
|
||||
```gitignore
|
||||
/.vs/
|
||||
```
|
||||
|
||||
如果 `.vs/` 已经被 Git 跟踪过,需要取消跟踪但保留本地文件:
|
||||
|
||||
```powershell
|
||||
git rm --cached -r -- ".vs"
|
||||
git commit -m "Stop tracking Visual Studio local files"
|
||||
git push
|
||||
```
|
||||
|
||||
## Clash Verge 代理问题
|
||||
|
||||
如果推送时报错:
|
||||
|
||||
+114
-22
@@ -1,29 +1,121 @@
|
||||
初始化:
|
||||
- git init
|
||||
# Git 命令速查
|
||||
|
||||
添加远程仓库:
|
||||
- git remote add 远端仓库名 地址
|
||||
## 初始化和远端
|
||||
|
||||
把修改加入暂存区:
|
||||
- git add .
|
||||
初始化本地仓库:
|
||||
|
||||
提交修改
|
||||
- git commit -m "备注信息"
|
||||
```powershell
|
||||
git init
|
||||
```
|
||||
|
||||
推送到远程仓库
|
||||
- git push
|
||||
- git push -u 远端仓库 本地分支
|
||||
强推修改
|
||||
- git push --force-with-lease 远端仓库 本地分支
|
||||
- --force-with-lease表示先检查有没有比目前分支更新的提交,如果有推送终止,更安全
|
||||
- --force表示强制修改分远端仓库支指针
|
||||
添加远端仓库:
|
||||
|
||||
移除cache中的某个文件更改:
|
||||
- git rm --cached -r -- "文件目录或文件名"
|
||||
```powershell
|
||||
git remote add origin https://github.com/Ki5ter/Obsidian.git
|
||||
```
|
||||
|
||||
移除整个树种的某个文件夹:
|
||||
- git filter-repo --path "文件名或文件目录" --invert-paths
|
||||
- git filter-repo --path "多个" --path "多个" --invert-paths
|
||||
查看远端仓库:
|
||||
|
||||
检查远端仓库信息
|
||||
- git remote -v
|
||||
```powershell
|
||||
git remote -v
|
||||
```
|
||||
|
||||
`origin` 是本地给远端仓库地址起的别名,也可以叫 `backup`、`gitee` 等。
|
||||
|
||||
## 日常提交
|
||||
|
||||
查看状态:
|
||||
|
||||
```powershell
|
||||
git status
|
||||
git status --short
|
||||
```
|
||||
|
||||
加入暂存区:
|
||||
|
||||
```powershell
|
||||
git add .
|
||||
```
|
||||
|
||||
提交到本地仓库:
|
||||
|
||||
```powershell
|
||||
git commit -m "提交说明"
|
||||
```
|
||||
|
||||
第一次推送并绑定上游:
|
||||
|
||||
```powershell
|
||||
git push -u origin master
|
||||
```
|
||||
|
||||
绑定后日常推送:
|
||||
|
||||
```powershell
|
||||
git push
|
||||
```
|
||||
|
||||
## 分支和上游
|
||||
|
||||
查看当前分支和上游关系:
|
||||
|
||||
```powershell
|
||||
git branch -vv
|
||||
```
|
||||
|
||||
`master` 或 `main` 是分支名。`git push origin master` 表示把本地 `master` 分支推送到 `origin` 这个远端。
|
||||
|
||||
`-u` 会把本地分支和远端分支绑定起来。绑定后,Git 知道当前分支默认推送到哪里。
|
||||
|
||||
## .gitignore 和取消跟踪
|
||||
|
||||
`.gitignore` 只会阻止未被跟踪的新文件进入 Git。已经被 Git 跟踪的文件,需要先从索引中移除。
|
||||
|
||||
只取消 Git 跟踪,保留本地文件:
|
||||
|
||||
```powershell
|
||||
git rm --cached -r -- "目录或文件名"
|
||||
git commit -m "Stop tracking local-only files"
|
||||
git push
|
||||
```
|
||||
|
||||
`--cached` 指 Git 索引/暂存区,不是普通缓存。它不会删除本地实际文件。
|
||||
|
||||
## 清理历史中的敏感文件
|
||||
|
||||
如果密码、密钥、Token 已经提交过,只从最新提交删除还不够,历史里仍然能看到。应先更换或吊销泄露过的密钥,再重写历史。
|
||||
|
||||
删除整个历史中的指定目录:
|
||||
|
||||
```powershell
|
||||
git filter-repo --path "密码本/" --path "服务器迁移/" --invert-paths
|
||||
```
|
||||
|
||||
如果不是 fresh clone,工具可能要求确认:
|
||||
|
||||
```powershell
|
||||
git filter-repo --force --path "密码本/" --path "服务器迁移/" --invert-paths
|
||||
```
|
||||
|
||||
`--path` 指定要匹配的路径;`--invert-paths` 表示反转选择,保留其他路径,删除这些指定路径。
|
||||
|
||||
`git filter-repo` 执行后可能会删除 `origin`,需要重新添加:
|
||||
|
||||
```powershell
|
||||
git remote add origin https://github.com/Ki5ter/Obsidian.git
|
||||
```
|
||||
|
||||
历史重写后强推远端:
|
||||
|
||||
```powershell
|
||||
git fetch origin
|
||||
git push --force-with-lease origin master
|
||||
```
|
||||
|
||||
`--force-with-lease` 会先确认远端分支还停在本地记录的位置,避免覆盖别人新推送的提交。
|
||||
|
||||
检查历史里是否还存在指定目录:
|
||||
|
||||
```powershell
|
||||
git log --all -- "密码本/" "服务器迁移/"
|
||||
```
|
||||
|
||||
+112
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user