本文从功能出发,对 git 常用指令进行了介绍,适合新手快速上手
其中夹杂几个我配置 git 时踩的坑,及解决方案
更多 git 工作流程 相关知识,在 miniob 那篇 blog 里有介绍
这里列几个学习资料:
实用 git
基本指令
git clone <git地址>
- 克隆仓库
git init
- 初始化仓库
git add -A
- 添加文件到暂存区
git commit -m “提交信息”
- 把暂存区的文件提交到仓库
git commit –amend -m “提交信息”
- 修正本地的commit信息
git log –stat
- 查看提交的历史记录reset
分支:
git checkout -b
- 以当前分支为基础新建分支
git branch
- 列举所有的分支
git checkout
- 单纯地切换到某个分支
git branch -D
- 删掉特定的分支
git merge
- 把 branchname 合并到当前分支下
git push
- 推送当前分支最新的提交到远程
git pull
- 拉取远程分支最新的提交到本地,并与本地代码合并
- pull = fetch + merge
冲突:
push分支时出现版本跟不上main的情况:
1 | git fetch upstream |
修改区间冲突:
1 | git status |
后悔药:
git 仓库
git checkout
- 工作区回滚
git reset HEAD^1
- 撤销最后一次提交
工作区代码
- 未add:
1 | git checkout <fileName> # 原理:从暂存区回复到工作区 |
- 已add未commit:
1 | git log # 复制最近一次 commit 的 id |
- 已commit想恢复到之前的某次commit:同上
缓存:
git stash 缓存栈
1 | git stash |
若想指定某次缓存的状态:
1 | git stash |
注:
git stash 的本质:保存「工作区 / 暂存区与 HEAD(最近一次提交)的差异」,并将工作区重置为 HEAD 状态
因此 git stash 后,你的工作区代码会恢复到与 commit 的节点相同的状态,也就是说你修改的代码看起来全都没了,并保存在了stash stack中
.gitignore
不想追踪
将不想追踪的文件的路径放在里面,你的 git 就不会记录这个文件的变化
e.g. 用 * 排除 public 目录里除了 theone.txt 以外的全部的文件,则要保证该文件的父目录未排除,即:
1 | /public/* |
取消追踪
以上只能忽略没有被追踪过的文件
若不想再追踪已追踪过的文件,可以追加如下操作:
1 | git rm --cached <fileName> # 若对象是目录,加上 -r 选项 |
检查是否成功排除:
1 | git check-ignore -v <fileName> |
远程 remote
git remote -v
- 查看当前版本库对应的远程仓库
git branch -vv
- 查看当前版分支对应的远程分支
git branch -a
- 能额外显示远程仓库所带的分支
git push <库名称> <你想push的分支(用空格隔开)>/-all(全部push)
- 推送到远程仓库
- e.g.
git push origin mybranch
git push <远程库名称> -d <远程分支名称>
- 删除远程分支(github 模块里有介绍另一种方法)
git checkout -b <新分支> origin/<新分支>
- git fetch 到新的分支后,想切换到该新分支
解决git连不上github —— 代理解决方案:
- 检查系统代理端口,与 v2ray 设置的 http 端口要一致,记录下来


我这里是 10809
- 设置 git 代理
1 | git config --global --unset http.proxy |
实用 github
设置
设置github默认分支:
GitHub - 库 - settings - branches - default删除远程分支:
在GitHub上作删除操作,并在本地 git 执行git remote prune <origin或你的远程库名称>
逛社区技巧
发现开源项目:
掘金这样的社区,
github自带trending,
hellogithub这样的用户,
ranyf/weekly限定词搜索:
search:
in:name xxx
in:readme xxx
in:description xxx
language:xxx
stars:>10000
pushed:>2023-09-01分类搜索:
awesome xxx ->百科大全
xxx sample->例子
xxx starter->项目空架子,
xxx tutorial->教程