# Git 命令速查 ## 初始化和远端 初始化本地仓库: ```powershell git init ``` 添加远端仓库: ```powershell git remote add origin https://github.com/Ki5ter/Obsidian.git ``` 查看远端仓库: ```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 -- "密码本/" "服务器迁移/" ```