Files
My-Notes/笔记/Git/命令.md
T

2.5 KiB

Git 命令速查

初始化和远端

初始化本地仓库:

git init

添加远端仓库:

git remote add origin https://github.com/Ki5ter/Obsidian.git

查看远端仓库:

git remote -v

origin 是本地给远端仓库地址起的别名,也可以叫 backupgitee 等。

日常提交

查看状态:

git status
git status --short

加入暂存区:

git add .

提交到本地仓库:

git commit -m "提交说明"

第一次推送并绑定上游:

git push -u origin master

绑定后日常推送:

git push

分支和上游

查看当前分支和上游关系:

git branch -vv

mastermain 是分支名。git push origin master 表示把本地 master 分支推送到 origin 这个远端。

-u 会把本地分支和远端分支绑定起来。绑定后,Git 知道当前分支默认推送到哪里。

.gitignore 和取消跟踪

.gitignore 只会阻止未被跟踪的新文件进入 Git。已经被 Git 跟踪的文件,需要先从索引中移除。

只取消 Git 跟踪,保留本地文件:

git rm --cached -r -- "目录或文件名"
git commit -m "Stop tracking local-only files"
git push

--cached 指 Git 索引/暂存区,不是普通缓存。它不会删除本地实际文件。

清理历史中的敏感文件

如果密码、密钥、Token 已经提交过,只从最新提交删除还不够,历史里仍然能看到。应先更换或吊销泄露过的密钥,再重写历史。

删除整个历史中的指定目录:

git filter-repo --path "密码本/" --path "服务器迁移/" --invert-paths

如果不是 fresh clone,工具可能要求确认:

git filter-repo --force --path "密码本/" --path "服务器迁移/" --invert-paths

--path 指定要匹配的路径;--invert-paths 表示反转选择,保留其他路径,删除这些指定路径。

git filter-repo 执行后可能会删除 origin,需要重新添加:

git remote add origin https://github.com/Ki5ter/Obsidian.git

历史重写后强推远端:

git fetch origin
git push --force-with-lease origin master

--force-with-lease 会先确认远端分支还停在本地记录的位置,避免覆盖别人新推送的提交。

检查历史里是否还存在指定目录:

git log --all -- "密码本/" "服务器迁移/"