天天看点

Git -2 使用技巧 快捷操作 [MD]

博文地址

我的GitHub 我的博客 我的微信 我的邮箱
baiqiantao bqt20094 [email protected]

目录

  • Git 使用技巧
    • git 工作流程
    • git rebase -i
    • git cherry-pick
    • 三个设置级别
    • 日志格式
      • 预置的日志格式
      • 自定义日志格式
    • author 和 committer
    • HEAD 的含义
    • 删除满足条件的分支

Git -2 使用技巧 快捷操作 [MD]

Git 的三个区域:

  • Working Tree(workspace):当前的工作区域
  • Index/Stage:暂存区域,使用 git add xx,就可以将 xx 添加到 Stage 里面
  • Repository:提交的历史,即使用 git commit 提交后的结果

【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

【r】修改多个提交:

  • git rebase -i HEAD~影响的最少commit数

    git rebase -i 前一个commitId

  • 需要修改的那几条commit

    pick

    r

  • 每个改为 reword 的 commit 都会提示你修改 commit 日志,修改保存后退出
注意,修改后会生成新的 commitId

cherry-pick 官方文档

cherry-pick 的翻译是

择优挑选

git cherry-pick <commitid> <commitid> # 挑选多个指定的 commit
git cherry-pick <start-commit>..<end-commit> # 指定范围,(左开右闭]
git cherry-pick <start-commit>^..<end-commit> # 指定范围,[左闭右闭]
git cherry-pick <branch name> # 挑选 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:<string>

    :自定义日志格式
git log -3 --pretty=fuller
           
Git -2 使用技巧 快捷操作 [MD]

语法规则:

--pretty=format:<string>

------------------------------------------------ 内容 ------------------------------------------------

其中

<string>

部分可包含以下内容:

  • %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

    :其他内容都使用默认的格式
Git -2 使用技巧 快捷操作 [MD]

参考

  • 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~1

    )
  • HEAD~n

    倒数第 n 次提交

git branch | grep 'dev' | xargs git branch -d //删除分支名包含 dev 的分支
           

命令解释:

  • git branch

    :用于列出本地所有分支
  • |

    :管道命令,用于将一串命令串联起来,前面命令的

    输出

    可以作为后面命令的

    输入

  • grep

    :搜索过滤命令,使用正则表达式搜索文本,并把匹配的行打印出来
  • xargs

    :参数传递命令,用于将标准输入作为命令的

    参数

    传给下一个命令

2019-7-14

本文来自博客园,作者:白乾涛,转载请注明原文链接:https://www.cnblogs.com/baiqiantao/p/11111287.html