Git 入门:版本管理与 GitHub 配置
从工作区、暂存区到版本回退,整理常用 Git 命令与 GitHub SSH 配置。
工作区、暂存区与提交
Git 保存提交历史。工作区是正在修改的文件,暂存区决定下一次提交包含哪些改动,HEAD 通常指向当前分支的最新提交。初始分支名由配置决定,下面明确使用 main。
图示来自原笔记引用的廖雪峰 Git 教程,图中分支名为 master;本文命令示例使用 main。
git init -b main
git status
git add README.md
git commit -m "docs: add README"
git diff # 工作区与暂存区
git diff --staged # 暂存区与 HEAD
git diff HEAD -- README.md
git log --oneline
git add 暂存指定路径,git commit 提交暂存区。提交前检查 git diff --staged,避免加入密钥、环境配置和大体积临时文件。
撤销修改与找回提交
先确定要操作的是未暂存改动、暂存区还是提交历史:
git restore --staged README.md # 取消暂存,保留工作区修改
git restore README.md # 丢弃未暂存改动,用暂存区版本恢复
git reflog # 查看本地引用移动记录
旧版 Git 可用 git reset HEAD -- README.md 取消暂存、用 git checkout -- README.md 恢复工作区。reflog 记录引用的变化,并非所有终端命令的历史;它也不是永久备份。
git reset --hard COMMIT_ID 会移动当前分支并覆盖暂存区及工作区中的受跟踪文件;开始前先保存要保留的修改。共享分支撤销某次提交通常使用 git revert COMMIT_ID,通过新提交表达撤销。
删除已跟踪文件后,可以 git rm README.md 并提交。若只是工作区误删且尚未暂存,git restore README.md 可恢复;如果删除已暂存,需要先取消暂存。
配置 GitHub 身份与 SSH
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
ssh-keygen -t ed25519 -C "you@example.com"
cat ~/.ssh/id_ed25519.pub
ssh -T git@github.com
把公钥添加到 GitHub 的 Settings → SSH and GPG keys。私钥保留在本机,已有密钥时不要覆盖。提交邮箱可使用 GitHub 提供的隐私邮箱;它与 SSH 登录身份是两个概念。
关联与克隆远程仓库
git remote add origin git@github.com:YOUR_ACCOUNT/YOUR_REPOSITORY.git
git remote -v
git push -u origin main
git clone git@github.com:YOUR_ACCOUNT/YOUR_REPOSITORY.git
git remote remove origin
git remote remove 只删除本地远程配置,不会删除 GitHub 仓库。路径包含中文通常可以使用;遇到工具链编码问题时再针对具体工具排查。