跳转到内容

QFC-git学习

老旧git笔记可以查看git笔记

🧠 Git 学习笔记(2025年7月8日)

Section titled “🧠 Git 学习笔记(2025年7月8日)”

区域名描述常用命令示例
工作区你正在编辑的实际文件位置git diff
暂存区准备提交的内容(已 git add)git diff --cached
HEAD(版本库)最近一次提交git log, HEAD~1 等查看

Terminal window
git commit -am "说明"

等价于:

Terminal window
git add <已被 Git 跟踪的文件>
git commit -m "说明"

⚠️ 不会添加新文件,必须是已被 Git 跟踪的文件才会生效。


模式是否回退 HEAD是否清除暂存区是否改动工作区用途说明
--soft仅撤销提交,保留暂存和改动
--mixed撤销提交 + 暂存,保留修改
--hard全部撤销(包括文件内容)⚠️

命令原理是否改历史推荐用途
git revert新建一个“反向”提交❌ 否协作场景下公开撤销
git reset直接修改 HEAD 指向的提交✅ 是本地清理、整理历史

  • HEAD:当前分支的最新提交
  • HEAD~1:倒数第 1 次提交(同 HEAD^
  • HEAD~2:倒数第 2 次,以此类推

你也可以直接使用 commit 哈希:

Terminal window
git reset --hard abc1234
git checkout abc1234
git cherry-pick abc1234

查看提交历史:

Terminal window
git log --oneline

命令比较内容
git diff工作区 ↔ 暂存区(修改未 add)
git diff --cached暂存区 ↔ HEAD(已 add 未 commit)

💡 git diff 默认是从 后向前比较:即,“现在的内容” 和 “之前版本(HEAD 或 index)” 进行对比。旧的用 --- 标记,新的用 +++ 标记。


命令说明
git fetch获取远程最新版本到本地 origin/分支
git merge合并某个分支到当前分支
git pull相当于 fetch + merge

建议:使用 git fetch + git loggit diff 查看差异再决定是否 merge。


从其他分支复制某次提交到当前分支:

Terminal window
git cherry-pick <commit>

用于“挑着用”某个改动,而不合整个分支。

如有冲突:

Terminal window
git add .
git cherry-pick --continue

放弃当前操作:

Terminal window
git cherry-pick --abort

对比项git mergegit rebase
提交结构保留分支结构(有 merge 提交)线性历史,无 merge 提交
是否改历史❌ 否✅ 是
使用场景多人协作(安全)本地整理、个人提交清理

Terminal window
git log --oneline --graph --all
Terminal window
git log --oneline --graph master feature
Terminal window
git log feature --not master --oneline

📌 11. git checkout 回退版本的用法

Section titled “📌 11. git checkout 回退版本的用法”

切换到历史版本(不会移动 HEAD):

Section titled “切换到历史版本(不会移动 HEAD):”
Terminal window
git checkout <commit-hash>

你会进入 detached HEAD(游离头指针) 状态。若想保留并继续开发:

Terminal window
git checkout -b new-branch
  • 恢复文件到最新提交:
Terminal window
git checkout -- <file>
  • 恢复文件到历史版本:
Terminal window
git checkout <commit> -- <file>

操作命令
退出 git log 分页器q
不分页显示 loggit --no-pager log
查看跟踪状态git branch -vv
查看远程状态git remote show origin
放弃未暂存的本地修改git checkout -- <file>
查看变更文件git status

📌 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 端口:

Terminal window
git config --global url."https://github.com/".insteadOf [email protected]:

或者设置 SSH 使用 443 端口:

编辑 ~/.ssh/config(Windows 在 C:\Users\你的用户名\.ssh\config)添加:

Host github.com
Hostname ssh.github.com
Port 443
User git

此后即可通过 SSH 的 443 端口正常使用 Git:

Terminal window
git clone [email protected]:xxx/your-repo.git

✅ 附加命令:查看当前代理设置

Section titled “✅ 附加命令:查看当前代理设置”
Terminal window
git config --global --get http.proxy
git config --global --get https.proxy

取消代理:

Terminal window
git config --global --unset http.proxy
git config --global --unset https.proxy