【GitHub 代码仓 02】git命令操作示例

一、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
相关推荐
逛逛GitHub2 小时前
GLM-5 发布了!10 分钟傻瓜化部署 OpenClaw 到飞书。
github
TongSearch3 小时前
Tongsearch分片的分配、迁移与生命周期管理
java·服务器·数据库·elasticsearch·tongsearch
蜜汁小强3 小时前
为 Github 创建本地 .ssh 关联 (RSA 以支持老系统)
运维·ssh·github
Elastic 中国社区官方博客4 小时前
从向量到关键词:在 LangChain 中的 Elasticsearch 混合搜索
大数据·开发语言·数据库·elasticsearch·搜索引擎·ai·langchain
1688red5 小时前
Elasticsearch集群安装部署及kibana配置
大数据·elasticsearch·jenkins
阿正的梦工坊5 小时前
Git提交中的perf和chore是什么?
git
雪域迷影5 小时前
sdl3-sample-简明教程,指导如何在包括移动和 Web 在内的各种平台上构建和使用 SDL3
github·c·开源软件·sdl3
Fly feng5 小时前
git rebase 变基操作教程
git
laoliu19965 小时前
开源 FRP GUI 客户端
git·开源·github