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.pub
cat 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