一、SSH 克隆私有仓库
Windows 下使用 SSH 克隆私有仓库的步骤(命令行版)
以下操作适用于 Windows 10/11,使用 Git Bash(推荐)或 PowerShell(需 OpenSSH 客户端已启用)
# 1. 打开 Git Bash(从开始菜单搜索 "Git Bash")
# 2. 生成 SSH 密钥(如果尚未生成)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 按回车使用默认路径(通常为 C:\Users\你的用户名\.ssh\id_ed25519)
# 3. 启动 ssh-agent 并添加私钥
eval $(ssh-agent)
ssh-add ~/.ssh/id_ed25519
# 4. 查看公钥内容(复制整段输出)
cat ~/.ssh/id_ed25519.pub
# 5. 登录 GitHub → Settings → SSH and GPG keys → New SSH key
# 将上一步复制的公钥粘贴进去,保存
# 6. 使用 SSH 克隆私有仓库
git clone git@github.com:用户名/私有仓库名.git
二、Token克隆私有仓库
Windows 下使用 Personal Access Token (PAT) 下载私有仓库(HTTPS 方式)
# 1. 在 GitHub 上生成 Personal Access Token (PAT)
# - 登录 GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) 或 Fine-grained tokens
# - 创建新 token,勾选 `repo` 权限(访问私有仓库必需)
# - 生成后**立即复制保存**(只显示一次!)
# 2. 使用 HTTPS 克隆私有仓库(替换 YOUR_TOKEN 和 YOUR_USERNAME)
git clone https://YOUR_TOKEN@github.com/YOUR_USERNAME/your-private-repo.git
示例:
git clone https://ghp_AbC
三、删除文件
# 1. 删除文件(假设文件名为 example.txt)
git rm example.txt
# 2. 提交更改
git commit -m "删除 example.txt 文件"
# 3. 推送到 GitHub(假设远程仓库名为 origin,主分支为 main)
git push origin main
四、删除文件夹
# 1. 删除文件夹(假设文件夹名为 example_dir)
git rm -r example_dir
# 2. 提交更改
git commit -m "删除 example_dir 文件夹"
# 3. 推送到 GitHub(假设远程仓库名为 origin,主分支为 main)
git push origin main
五、添加文件
# 1. 添加文件(假设文件名为 new_file.txt)
git add new_file.txt
# 2. 提交更改
git commit -m "添加 new_file.txt 文件"
# 3. 推送到 GitHub(假设远程仓库名为 origin,主分支为 main)
git push origin main
六、添加文件夹
# 1. 添加文件夹(假设文件夹名为 new_dir)
git add new_dir/
# 2. 提交更改
git commit -m "添加 new_dir 文件夹"
# 3. 推送到 GitHub(假设远程仓库名为 origin,主分支为 main)
git push origin main
七、添加所有修改
# 1. 添加所有修改(包括新增、修改、删除的文件)
git add .
# 2. 提交更改
git commit -m "提交所有修改"
# 3. 推送到 GitHub(假设远程仓库名为 origin,主分支为 main)
git push origin main
八、查看所有修改的状态
# 查看工作区和暂存区的变更状态
git status
九、查看被忽略的文件
# 显示被 .gitignore 忽略的文件
git status --ignored
十、查看提交日志
# 查看提交历史(简洁格式)
git log --oneline
# 或查看详细提交日志
git log
十一、查看文件被修改了哪些内容
# 查看工作区中所有已修改但未暂存的文件差异
git diff
# 查看指定文件的修改内容(未暂存)
git diff 文件名
# 查看已暂存(add 后)但未提交的修改
git diff --cached
# 或使用(等效于 --cached)
git diff --staged
# 查看某次提交与当前工作区的差异(例如与 HEAD 比较)
git diff HEAD 文件名
十二、恢复被删除的文件(从 Git 仓库)
# 恢复单个文件
git restore config.json
git restore readme.txt
# 恢复所有被删除的文件
git restore .
# 或者使用 checkout(老版本 Git)
git checkout -- config.json readme.txt
十三、发布版本(标签)
提交并打标签 v1.0
# 1. 添加所有变更(包括修改的 test2.py 和新增的 test3.py)
git add .
# 2. 提交更改,并写明这是 v1.0 版本
git commit -m "feat: release v1.0"
# 3. 为本次提交打上轻量标签 v1.0
git tag v1.0
如果你希望使用带注释的标签(推荐用于正式版本):
git tag -a v1.0 -m "Release version 1.0"
# 4. 推送代码到远程仓库(origin/main)
git push origin main
# 5. 推送标签到 GitHub(否则标签不会出现在远程)
git push origin v1.0
提交并打标签 v2.0
# 1. 添加所有新改动(包括修改和新增文件)
git add .
# 2. 提交更改(建议写清楚是 v2.0)
git commit -m "feat: release v2.0"
# 3. 打上附注标签(推荐用于正式版本)
git tag -a v2.0 -m "Release version 2.0"
# 4. 推送最新代码到 main 分支
git push origin main
# 5. 推送 v2.0 标签到 GitHub
git push origin v2.0
十四、切换到发布版本(标签)修改bug
如v1.0
# 1. 切换到 v1.0(进入 detached HEAD 状态)
git checkout v1.0
# 2. 修改 bug(例如编辑 test1.py)
# (用你的编辑器改代码)
# 3. 提交修复(此时提交在 detached HEAD 上)
git add .
git commit -m "fix: critical bug in v1.0"
# 4. 立即打上新版本标签(如 v1.1)→ 这会保护该提交不被 Git 回收
git tag -a v1.1 -m "Patch release: fix bug in v1.0"
# 5. 切回 main 分支
git switch main
# 6. 把刚才的修复提交"移植"到 main
# 先获取上一步的 commit ID(假设是 abc1234)
# 方法:看第 3 步提交后的输出,或运行:
# git log --oneline -1
git cherry-pick abc1234
# 7. 推送 main(包含同步的修复)
git push origin main
# 8. 推送新标签 v1.1(发布修复版)
git push origin v1.1
十五、创建分支(fix)
# 1. 切换到主分支并同步最新代码
git checkout main
git pull origin main
# 2. 创建并切换到名为 "fix" 的分支
git checkout -b fix
# 3. 修改你的代码(修复 bug)
# 4. 添加所有改动
git add .
# 5. 提交更改
git commit -m "fix: resolve login issue"
# 6. 推送分支到 GitHub(首次推送需设置上游)
git push -u origin fix
十六、分支修改bug提交
# 1. 确认你在 fix 分支
git checkout fix
# 2. 拉取远程最新变更(可选但推荐,避免冲突)
git pull origin fix
# 3. 在代码编辑器中修改 bug(比如修正逻辑、修复拼写等)
# 4. 添加修改的文件
git add .
# 5. 提交更改(建议写清楚是"修复补充"还是"修复 XX 问题")
git commit -m "fix: correct null check in login handler"
# 6. 推送更新到远程的 fix 分支
git push origin fix
十七、单独文件描述提交bug
修改了两个文件:
src/auth/login.js → 修复登录时邮箱为空导致崩溃的问题
src/profile/avatarUploader.js → 修复头像上传失败的问题
这两个是独立的 bug,应该分别提交。
# 1. 确保你在正确的分支上(比如 fix 或 feature 分支)
git checkout fix
# 2. 查看当前有哪些文件被修改
git status
# 输出示例:
# modified: src/auth/login.js
# modified: src/profile/avatarUploader.js
# 3. 先只暂存第一个文件(login.js)
git add src/auth/login.js
# 4. 提交第一个修复(专注描述这个文件的改动)
git commit -m "fix(auth): handle null email in login handler"
# 5. 再暂存第二个文件(avatarUploader.js)
git add src/profile/avatarUploader.js
# 6. 提交第二个修复
git commit -m "fix(profile): retry avatar upload on network error"
# 7. 推送所有新提交到远程分支(假设分支叫 fix)
git push origin fix
十八、从 main 同步最新代码到当前分支
当你在 fix 分支开发时,main 可能已有新提交,需同步以减少合并冲突。
# 1. 切换到 main 并拉取最新
git checkout main
git pull origin main
# 2. 切回你的分支(如 fix)
git checkout fix
# 3. 将 main 的更新合并进来(推荐用 rebase 保持线性历史)
git rebase main
# 或者用 merge(会产生合并提交)
# git merge main
# 4. 如果 rebase 过程中出现冲突,解决后:
git add .
git rebase --continue
# 5. 强制推送(因为 rebase 改变了提交历史)
git push --force-with-lease origin fix
十九、解决合并冲突
当 git pull、git merge 或 git rebase 出现冲突时:
# 1. 查看哪些文件有冲突
git status
# 2. 打开冲突文件,查找 <<<<<<<、=======、>>>>>>> 标记
# 手动编辑,保留正确代码,删除标记
# 3. 标记冲突已解决
git add 冲突的文件名 # 如 git add src/app.js
# 4. 如果是 merge:
git commit -m "fix: resolve merge conflict"
# 如果是 rebase:
git rebase --continue
# 5. 推送修复后的分支
git push origin fix
二十、撤销本地未推送的提交(reset)
不小心提交了错误内容,且还没推送到 GitHub:
# 查看提交历史,找到要回退到的 commit ID(比如 abc123)
git log --oneline
# 方式1:完全丢弃最近1次提交(代码也丢掉)
git reset --hard HEAD~1
# 方式2:保留代码在工作区(可重新修改)
git reset --soft HEAD~1
# 方式3:保留代码在暂存区
git reset --mixed HEAD~1 # 等价于 git reset HEAD~1
二十一、撤销已推送的提交(安全方式:revert)
提交已推送到 GitHub,不能直接 reset(会破坏协作),应创建"反向提交":
# 1. 查看要撤销的提交 ID
git log --oneline
# 2. 创建一个"撤销该提交"的新提交
git revert abc123 # abc123 是要撤销的 commit ID
# 3. 编辑 revert 提交信息(默认即可),保存退出
# 4. 推送这个 revert 提交
git push origin main # 或你的分支名
二十二、查看远程仓库信息
# 查看远程仓库地址和分支跟踪关系
git remote -v
# 查看某个远程的详细信息(如 origin)
git remote show origin
# 查看所有远程分支(需先 fetch)
git fetch
git branch -r
二十三、清理未跟踪的文件(如临时文件、日志)
# 预览哪些文件会被删除(安全检查)
git clean -n
# 删除所有未跟踪的文件(不包括 .gitignore 忽略的)
git clean -f
# 删除未跟踪的文件 + 目录
git clean -fd
# 删除包括被 .gitignore 忽略的文件(慎用!)
git clean -fxd
git clean 会永久删除文件,请先确认!
二十四、查看某次提交修改了哪些文件
# 查看最近一次提交改动的文件列表
git show --name-only HEAD
# 查看指定提交(如 abc123)的文件列表
git show --name-only abc123
# 查看两次提交之间的差异文件
git diff --name-only main fix
二十五、临时保存当前修改(stash)
正在 fix 分支改代码,突然要切回 main 处理紧急任务:
# 1. 保存当前未提交的修改(包括未 add 的)
git stash push -m "WIP: login validation"
# 2. 切换到 main
git checkout main
# 3. 处理完紧急任务后,切回 fix
git checkout fix
# 4. 恢复之前保存的修改
git stash pop
# 查看所有 stash 记录
git stash list
二十六、重命名分支(本地 + 远程)
# 1. 重命名当前分支(假设当前在 old-name)
git branch -m new-name
# 2. 删除远程旧分支
git push origin --delete old-name
# 3. 推送新分支并设置 upstream
git push -u origin new-name
二十七、比较两个分支的差异
# 查看 main 和 fix 分支有哪些不同文件
git diff --name-only main fix
# 查看具体代码差异(输出较长)
git diff main fix
# 查看 fix 比 main 多了哪些提交
git log main..fix --oneline