Git 备查指南
前言
常用的 Git 指令,一边整理一边复习,还顺便 get 了新的指令。真 · 温故而知新 😉
基础配置
1 查看、配置用户信息
- 配置用户名:
git config --global user.name "yourname" - 配置用户邮箱:
git config --global user.email "youremail@qq.com" - 查看用户信息:
git config --global --list - 查看用户名、邮箱:
git config user.name,git config user.email

2 配置 ssh 🔑
配置 ssh 后,使用ssh 地址 clone 项目,无需再输入账号密码。一次配置,永久使用。😉
检查 ssh 是否存在
cd ~/.ssh,找到.ssh文件夹ls或ll,查看是否存在id_rsa.pubcat id_rsa.pub,获取秘钥

如果 ssh 不存在,那就 ——
生成秘钥
ssh-keygen -t rsa -C "your-email@qq.com"
生成后就可以通过上述方式找到 ssh,拷贝一下,接下来去 github ——
在 github 中添加秘钥
点击头像 → Settings → SSH and GPG keys → New SSH key → 黏贴 ssh-rsa 开头的串串 → 确定添加 → OK啦! 🎉


关于 ssh 的详细操作和解说,参考: www.liaoxuefeng.com/wiki/896043…
基础指令
1 仓库管理
- 本地创建 git 仓库:
git init - 本地仓库关联远程仓库:
git remote add origin git@xxx.git注意:关联后第一次推送时添加-u参数,即:git push -u origin master作用:-u(--up-stream)用来建立本地分支与远程某个分支的关联,形成一个管道,之后可简化命令,直接git push - 克隆远程仓库:
git clone git@xxx.git - 查看远程仓库地址:
git remote -v - 查看远程仓库及分支信息:
git remote show origin
2 分支管理
- 查看当前分支:
git branch - 查看所有分支:
git branch -a - 创建分支:
git branch xxx - 切换分支:
git checkout xxx - 创建并切换分支:
git checkout -b xxx(等同依次执行上面两个命令) - 删除分支:
git branch -d xxx - 强制删除未合并的分支:
git branch -D xxx - 本地清理远程已删除的分支:
git remote prune - 删除远程分支(非默认分支):
git push origin --delete xxx - 合并分支:
git merge xxx - 变基:
git rebase xxx- 参数
--continue:遇到冲突的情况,解决冲突后 continue - 参数
--skip:跳过这次 rebase 操作
- 参数
3 代码管理
-
拉取和推送
- 查看当前分支本地与远程对比:
git status - 拉取新代码:
git pull - 添加指定修改到暂存区:
git add <file> - 添加所有修改到暂存区:
git add . - 提交修改到暂存区:
git commit -m '备注信息' - 推送到远程仓库:
git push - 查看本次修改的代码:
git diff - 摘取某个commit:
git cherry-pick <commitId>
- 查看当前分支本地与远程对比:
-
撤销修改
- 撤销工作区指定文件的修改:
git restore <file>或git checkout -- <file> - 撤销暂存区指定文件的修改:
git restore --staged <file>或git reset HEAD <file> - 撤销暂存区所有文件的修改:
git reset HEAD - 回退到上一个commit:
git reset HEAD^ - 回退到指定commit:
git reset <commitId> - 回滚某次提交:
git revert <commitId>(新增一个commit抵消之前的commit)
- 撤销工作区指定文件的修改:
-
脏代码
- 存储脏代码:
git stash - 查看脏代码列表:
git stash list - 取出最近一个 stash:
git stash pop - 取出指定 stash:
git stash pop@{0} - 删除指定 stash:
git stash drop stash@{0}
- 存储脏代码:
-
代码管理示意图

- 版本回退示意图

4 标签管理
- 打印所有标签:
git tag - 打印匹配正则的标签:
git tag -l test**(获取以test开头的分支) - 创建本地标签:
git tag test-1.0.0 - 创建带备注信息的本地标签:
git tag -a test-1.0.0 -m "备注信息" - 推送标签到远程仓库:
git push origin test-1.0.0 - 推送所有标签到远程仓库:
git push origin --tags - 删除本地标签:
git tag -d test-1.0.0 - 删除远程仓库标签:
git push origin --delete test-1.0.0
5 Git Log
在整理文章的过程中,发现原来 git log 有这么多玩法,比如说 --pretty 支持自定义输出样式,-S可以按内容查询日志,还有个 git shortlog ,它甚至能按人员统计提交记录、还能排序。 这可比我能想象到的强大多了。
- 分支对比:
git log master..dev(找出 dev 比 master 多的 commit) - 查看本地提交记录:
git log,git log dev - 查看远程提交记录:
git log origin,git log origin/dev - 按内容查找提交记录:
git log -S "Hello World" - 查看每个用户的 commit 次数和注释 :
git shortlog- 参数
-s:省略注释,仅返回一个统计数 - 参数
-n:按照 commit 数量递减输出
- 参数
可选参数
| 参数 | 说明 |
|---|---|
--oneline | 格式化,一行显示,更简洁清晰的展示 |
--stat | 显示每次提交的文件增删数量 |
--graph | 图像化展示提交历史记录 |
--author | 指定用户 |
--pretty=format | 自定义输出格式 |
--since=<date> / --after=<date> | 指定日期之后 |
--until=<date> / --before=<date> | 指定日期之前 |
使用示例
查询指定用户某个时间区间的提交记录: git log --author="tangjinzhou" --after="2021/6/1" --before="2021/6/30" --oneline

自定义输出格式:git log --author="tangjinzhou" --pretty=format:"%h | %ad | %s"

自定义格式的参数说明
| 参数 | 说明 | |
|---|---|---|
| %H | 提交对象(commit)的完整哈希字串 | |
| %h | 提交对象的简短哈希字串 | |
| %T | 树对象(tree)的完整哈希字串 | |
| %t | 树对象的简短哈希字串 | |
| %P | 父对象(parent)的完整哈希字串 | |
| %p | 父对象的简短哈希字串 | |
| %an | 作者(author)的名字 | |
| %ae | 作者的电子邮件地址 | |
| %ad | 作者修订日期(可以用 | -date= 选项定制格式) |
| %ar | 作者修订日期,按多久以前的方式显示 | |
| %cn | 提交者(committer)的名字 | |
| %ce | 提交者的电子邮件地址 | |
| %cd | 提交日期 | |
| %cr | 提交日期,按多久以前的方式显示 | |
| %s | 提交说明 |
更多的
Git Log玩法:git-scm.com/docs/git-lo…
参考链接
转载自:https://juejin.cn/post/6993310191789834271