QFC-git学习
老旧git笔记可以查看git笔记
🧠 Git 学习笔记(2025年7月8日)
Section titled “🧠 Git 学习笔记(2025年7月8日)”📌 1. Git 三区概念
Section titled “📌 1. Git 三区概念”区域名 | 描述 | 常用命令示例 |
---|---|---|
工作区 | 你正在编辑的实际文件位置 | git diff |
暂存区 | 准备提交的内容(已 git add) | git diff --cached |
HEAD(版本库) | 最近一次提交 | git log , HEAD~1 等查看 |
📌 2. git commit -am
的用法
Section titled “📌 2. git commit -am 的用法”git commit -am "说明"
等价于:
git add <已被 Git 跟踪的文件>git commit -m "说明"
⚠️ 不会添加新文件,必须是已被 Git 跟踪的文件才会生效。
📌 3. git reset
三种模式对比
Section titled “📌 3. git reset 三种模式对比”模式 | 是否回退 HEAD | 是否清除暂存区 | 是否改动工作区 | 用途说明 |
---|---|---|---|---|
--soft | ✅ | ❌ | ❌ | 仅撤销提交,保留暂存和改动 |
--mixed | ✅ | ✅ | ❌ | 撤销提交 + 暂存,保留修改 |
--hard | ✅ | ✅ | ✅ | 全部撤销(包括文件内容)⚠️ |
📌 4. git revert
vs git reset
Section titled “📌 4. git revert vs git reset”命令 | 原理 | 是否改历史 | 推荐用途 |
---|---|---|---|
git revert | 新建一个“反向”提交 | ❌ 否 | 协作场景下公开撤销 |
git reset | 直接修改 HEAD 指向的提交 | ✅ 是 | 本地清理、整理历史 |
📌 5. HEAD~1
和版本号的使用
Section titled “📌 5. HEAD~1 和版本号的使用”HEAD
:当前分支的最新提交HEAD~1
:倒数第 1 次提交(同HEAD^
)HEAD~2
:倒数第 2 次,以此类推
你也可以直接使用 commit 哈希:
git reset --hard abc1234git checkout abc1234git cherry-pick abc1234
查看提交历史:
git log --oneline
📌 6. git diff
与 git diff --cached
Section titled “📌 6. git diff 与 git diff --cached”命令 | 比较内容 |
---|---|
git diff | 工作区 ↔ 暂存区(修改未 add) |
git diff --cached | 暂存区 ↔ HEAD(已 add 未 commit) |
💡
git diff
默认是从 后向前比较:即,“现在的内容” 和 “之前版本(HEAD 或 index)” 进行对比。旧的用---
标记,新的用+++
标记。
📌 7. git fetch
/ merge
/ pull
区别
Section titled “📌 7. git fetch / merge / pull 区别”命令 | 说明 |
---|---|
git fetch | 获取远程最新版本到本地 origin/分支 |
git merge | 合并某个分支到当前分支 |
git pull | 相当于 fetch + merge |
建议:使用 git fetch
+ git log
或 git diff
查看差异再决定是否 merge。
📌 8. git cherry-pick
用法
Section titled “📌 8. git cherry-pick 用法”从其他分支复制某次提交到当前分支:
git cherry-pick <commit>
用于“挑着用”某个改动,而不合整个分支。
如有冲突:
git add .git cherry-pick --continue
放弃当前操作:
git cherry-pick --abort
📌 9. git rebase
vs merge
Section titled “📌 9. git rebase vs merge”对比项 | git merge | git rebase |
---|---|---|
提交结构 | 保留分支结构(有 merge 提交) | 线性历史,无 merge 提交 |
是否改历史 | ❌ 否 | ✅ 是 |
使用场景 | 多人协作(安全) | 本地整理、个人提交清理 |
📌 10. 分支图和对比查看命令
Section titled “📌 10. 分支图和对比查看命令”git log --oneline --graph --all
只看两个分支差异:
Section titled “只看两个分支差异:”git log --oneline --graph master feature
查看某分支独有提交:
Section titled “查看某分支独有提交:”git log feature --not master --oneline
📌 11. git checkout
回退版本的用法
Section titled “📌 11. git checkout 回退版本的用法”切换到历史版本(不会移动 HEAD):
Section titled “切换到历史版本(不会移动 HEAD):”git checkout <commit-hash>
你会进入 detached HEAD(游离头指针) 状态。若想保留并继续开发:
git checkout -b new-branch
恢复单个文件内容:
Section titled “恢复单个文件内容:”- 恢复文件到最新提交:
git checkout -- <file>
- 恢复文件到历史版本:
git checkout <commit> -- <file>
📌 12. 常用快捷命令总结
Section titled “📌 12. 常用快捷命令总结”操作 | 命令 |
---|---|
退出 git log 分页器 | 按 q |
不分页显示 log | git --no-pager log |
查看跟踪状态 | git branch -vv |
查看远程状态 | git remote show origin |
放弃未暂存的本地修改 | git checkout -- <file> |
查看变更文件 | git status |
时间:2025年7月8日
Section titled “时间:2025年7月8日”📌 13. Git 代理技巧(代理失效时的解决办法)
Section titled “📌 13. Git 代理技巧(代理失效时的解决办法)”在使用 Git 克隆或拉取远程仓库时出现如下错误:
ssh: connect to host github.com port 22: Connection timed out
这是因为某些网络环境(如公司网络)屏蔽了 SSH 的默认 22 端口。
✅ 解决方法:切换到 HTTPS + 使用 443 端口
Section titled “✅ 解决方法:切换到 HTTPS + 使用 443 端口”编辑 Git 配置,将 github.com
走 HTTPS 443 端口:
或者设置 SSH 使用 443 端口:
编辑 ~/.ssh/config
(Windows 在 C:\Users\你的用户名\.ssh\config
)添加:
Host github.com Hostname ssh.github.com Port 443 User git
此后即可通过 SSH 的 443 端口正常使用 Git:
✅ 附加命令:查看当前代理设置
Section titled “✅ 附加命令:查看当前代理设置”git config --global --get http.proxygit config --global --get https.proxy
取消代理:
git config --global --unset http.proxygit config --global --unset https.proxy