Git -2 使用技巧 快捷操作 [MD]
目录
- 目录
- Git 使用技巧
- git 工作流程
- git rebase -i
- git cherry-pick
- 三个设置级别
- 日志格式
- 预置的日志格式
- 自定义日志格式
- author 和 committer
- HEAD 的含义
- 删除满足条件的分支
| 我的GitHub | 我的博客 | 我的微信 | 我的邮箱 |
|---|---|---|---|
| baiqiantao | baiqiantao | bqt20094 | baiqiantao@sina.com |
目录
Git 使用技巧
git 工作流程

Git 的三个区域:
- Working Tree(workspace):当前的工作区域
- Index/Stage:暂存区域,使用 git add xx,就可以将 xx 添加到 Stage 里面
- Repository:提交的历史,即使用 git commit 提交后的结果
git rebase -i
【s】合并多个提交:
- 执行
git rebase -i HEAD~影响的最少commit数或git rebase -i 前一个commitId - 将
需要合并的那条commit前面的pick改为s,保存后退出 - 会提示你修改 commit 日志,修改完保存后退出
假如我们只是合并了第 2 条和第 3 条的commit,但是第 1 条的 commitId 也变了。
【d】删除多个提交:
- 执行
git rebase -i HEAD~影响的最少commit数或git rebase -i 前一个commitId - 将
需要删除的那几条commit前面的pick改为d,保存后退出 - 会提示你修改 commit 日志,修改完保存后退出
【r】修改多个提交:
- 执行
git rebase -i HEAD~影响的最少commit数或git rebase -i 前一个commitId - 将
需要修改的那几条commit前面的pick改为r,保存后退出 - 每个改为 reword 的 commit 都会提示你修改 commit 日志,修改保存后退出
注意,修改后会生成新的 commitId
git cherry-pick
cherry-pick 官方文档
cherry-pick 的翻译是
择优挑选
git cherry-pick # 挑选多个指定的 commit
git cherry-pick .. # 指定范围,(左开右闭]
git cherry-pick ^.. # 指定范围,[左闭右闭]
git cherry-pick # 挑选 branch 最顶端的提交
start-commit:离当前时间最早的提交,不包含
end-commit:离当前时间最近的提交,包含
如果 cherry-pick 多个 commit 时遇到冲突:
git cherry-pick --continue:继续进行下个操作git cherry-pick --quit:结束 cherry-pick 操作,但是不会影响冲突之前多个提交中已经成功的git cherry-pick --abort:停止本次操作,回到 cherry-pick 前的状态,包括多个提交中已经成功的
三个设置级别
Git 的设置文件有三个级别:local、global、system
- 位于某个由Git控制的
项目下隐藏的.git目录下的config文件,包含了具体到某个项目的配置。 - 位于用户目录下的
.gitconfig文件 ,如C:\Users\Administrator\.gitconfig,包含了具体到某个用户配置的值。如果你传递参数选项--global给git config,它将读写这个文件。 - 位于Git安装目录下的
gitconfig文件,如C:\Program Files\Git\mingw64\etc\gitconfig,包含了适用于系统所有用户和所有库的值。如果你传递参数选项--system给git config,它将读写这个文件。
| 级别 | 影响范围 | 配置文件位置 | 优先级 |
|---|---|---|---|
local |
本仓库 | /特定Git仓库/.git/config |
最高 |
global |
当前用户的所有仓库 | /Users/当前用户/.gitconfig |
中 |
system |
当前系统所有用户的所有仓库 | /Git安装目录/mingw64/etc/gitconfig |
最低 |
其实还有一个
worktree,估计是新增的,不常用,也不知道干嘛的
日志格式
预置的日志格式
按指定格式显示日志信息 --pretty ,可选项有:
--pretty=medium:显示 3 行(commitId、Author、Date) + 提交说明,默认--pretty=oneline:在一行显示,仅显示 commitId 和 提交说明--pretty=short:显示 2 行(commitId、Author) + 提交说明--pretty=full:显示 3 行(commitId、Author、Commit) + 提交说明--pretty=fuller:显示 5 行(commitId、Author、AuthorDate、Commit、CommitDate) + 提交说明--pretty=email:没啥用--pretty=raw:没啥用--pretty=format::自定义日志格式
git log -3 --pretty=fuller

自定义日志格式
语法规则:--pretty=format:
------------------------------------------------ 内容 ------------------------------------------------
其中部分可包含以下内容:
%H提交的完整哈希字串,%h提交对象的简短哈希字串%T树对象的完整哈希字串,%t树对象的简短哈希字串%P父对象的完整哈希字串,%p父对象的简短哈希字串%an作者(author)的名字,%cn提交者(committer)的名字%ae作者的电子邮件地址,%ce提交者的电子邮件地址%ad作者修订日期,%cd提交日期;可以用-date=选项定制格式%ar作者修订日期,%cr提交日期;按多久以前的方式显示%s提交说明
------------------------------------------------ 颜色 ------------------------------------------------
git config --global color.ui true //启用默认的颜色设置
git config --global color.ui false //关闭默认的颜色设置
git config --global color.diff.meta "blue black bold"
- 可以针对具体的内容进行设置如:color.branch、color.diff、color.interactive、color.status
- 颜色可用值有:normal、black、red、green、yellow、blue、magenta、cyan、white
- 字体可选值有:bold、dim、ul、blink、reverse
------------------------------------------------ 案例 ------------------------------------------------
git log -3 --pretty=format:"%Cred%h %Cgreen[%cr] %Cred%an %Creset%s %Creset"
格式 %Cred%h %Cgreen[%cr] %Cred%an %Creset%s %Creset 的含义:
%Cred%h:红色的简短哈希字串%Cgreen[%cr]:绿色的提交日期,按多久以前的方式显示%Cred%an:红色的作者(author)的名字%Creset%s:默认的白色的提交说明%Creset:其他内容都使用默认的格式

author 和 committer
参考
author是实际的修改者(patch 的作者),committer是实际的提交者(把 patch 应用到 repository 里的人)- 很多项目限制只有少数人可以提交 patch,但大家(patch 的作者)都可以把 patch 发送给这些人
committer只能通过 commit 得到,通过git commit --reset-author或者--author="Name"可以修改 Author(一般不会修改)- 典型场景,如果你通过
cherry-pick合入了别人的一个修改(没有冲突),然后push到仓库,此时author是别人,committer是你自己
作者是指最后一次
修改文件的人,而提交者是指提交该文件的人
HEAD 的含义
HEAD最后一次提交HEAD^指最后一个提交的父提交(等同于HEAD~1)HEAD~n倒数第 n 次提交
删除满足条件的分支
git branch | grep 'dev' | xargs git branch -d //删除分支名包含 dev 的分支
命令解释:
git branch:用于列出本地所有分支|:管道命令,用于将一串命令串联起来,前面命令的输出可以作为后面命令的输入grep:搜索过滤命令,使用正则表达式搜索文本,并把匹配的行打印出来xargs:参数传递命令,用于将标准输入作为命令的参数传给下一个命令
2019-7-14