Git
Config email and username:
git config --global user.name "username"
git config --global user.email useremail@qq.com
git config --global core.editor vim
git config --global credential.helper store
git config --list
HTTP Credential
首先打开 git config --global credential.helper store
然后生成一个 PTA (Personal access tokens) https://github.com/settings/tokens
Clone 一个私有仓库即可进入交互式登录命令行,然后输入用户名和 PTA 登录(非密码),git 就会记住 PTA,以后将不再需要登录。
基本操作
拉取 Github PR:
# 获取特定 PR 分支 (假设 PR 编号是 123,本地分支为 pr123)
git fetch origin pull/123/head:pr123
暂存区操作
在 Git 的日常操作中,这个需求非常高频(通常是误加了配置文件或二进制文件)。核心关键词是 --cached,它表示只操作索引(Stage),不碰物理文件。
根据你的场景,分为以下三种处理方式:
1. 从暂存区 (Stage/Index) 移除
场景: 你刚执行了 git add .,发现把不该加的文件也加进去了,但还没执行 commit。
- 现代推荐做法 (Git 2.23+):
git restore --staged <文件路径>
- 传统做法:
git reset HEAD <文件路径>
结果: 文件变回 "Untracked" 或 "Modified" 状态,硬盘里的文件完好无损。
2. 从上一次提交 (Commit) 中移除
场景: 你刚刚执行了 commit,发现里面包含了一个不该提交的文件,想把它“撤回”到工作区。
- 先从暂存区移除(保留物理文件):
git rm --cached <文件路径>
- 覆盖上一次提交:
git commit --amend --no-edit
结果: ZBS-31142 的最新提交里不再有这个文件,但它依然躺在你的硬盘里。
3. 从更早的提交中移除 (Interactive Rebase)
场景: 那个文件在 3 个 commit 之前就被加进去了,你想在不丢失后续工作的情况下把它删掉。
- 开始交互式变基:
git rebase -i HEAD~4 # 数字取决于你想回溯多远
- 在编辑器里: 将目标 commit 前面的
pick改为edit,保存退出。 - 执行移除:
git rm --cached <文件路径>
- 修正 commit 并继续:
git commit --amend --no-editgit rebase --continue
4. 彻底停止追踪(但保留物理文件)
场景: 某个文件(如 config.yaml)已经被追踪并提交过了,现在你想把它加入 .gitignore,让 Git 以后彻底无视它,但不能删掉本地文件。
git rm --cached <文件路径>
# 然后手动在 .gitignore 中添加该路径
git add .gitignore
git commit -m "Untrack sensitive config file"
💡 极客提示:
作为开发者,建议给这个操作设个别名。如果你经常需要把文件从追踪列表中剔除,可以在 .gitconfig 里加一行:
[alias]
unstage = restore --staged
untrack = rm --cached
这样你只需要执行 git untrack secret.key 就能安全地把它从 Git 的视线中移除了。
你在处理 zbs-client-go 的代码时,是不是不小心把测试产生的某些大文件或者日志加进去了?如果你发现仓库体积异常变大,可能还需要用到 git filter-repo 这种更重型的历史清理工具。
[[Git GPG Signature]]
[[Git Proxy Configuration]]