git特殊命令

git config命令

配置文件

这些变量可以被存储在三个不同的位置:

  1. /etc/gitconfig 文件:包含了适用于系统所有用户和所有库的值。如果你传递参数选项’—system’ 给 git config,它将明确的读和写这个文件
  2. ~/.gitconfig 文件 :具体到你的用户。你可以通过传递—global 选项使Git 读或写这个特定的文件
  3. 位于git目录的config文件 (也就是 .git/config) :无论当前在用的库是什么,特定指向该单一的库。每个级别重写前一个级别的值。因此,在.git/config中的值覆盖了在/etc/gitconfig中的同一个值。

配置用户

带global参数为全局设置,当希望不同工程用不同的用户名时(比如:个人项目和公司项目),则移除–global参数,系统回优先使用当前配置

1
2
3
4
5
$ git config  user.name "maxsu"
$ git config user.email "test.com@foxmail.com"

$ git config --global user.name "maxsu"
$ git config --global user.email "test.com@foxmail.com"

配置编辑器

  • 配置编辑工具
    • $ git config --global core.editor 工具路径
  • 配置合并工具
    • $ git config --global merge.tool 比较工具路径
  • 配置比较工具
    • $ git config --global diff.tool 比较工具路径

检查配置

如果想检查你的设置,可以使用 git config --list 命令来列出Git可以在该处找到的所有的设置:

添加删除配置

  • 添加
    • git config [–local|–global|–system] –add section.key value(默认是添加在 local 配置中)
  • 删除
    • git config [–local|–global|–system] –unset section.key

git log命令

设置log命令

设置git log命令可方便查看日志,普通的gitlog指令不人性化

  • 命令
1
2
3
4
5
##单行列出详细信息
git log --pretty=format:"%cn committed %h on %cd"
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
##绘制合并图 --graph
git log --graph --oneline --decorate
  • 定义别名
1
2
3
git config --global alias.lg

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

提交log的过滤

  • 根据数量过滤

    • git log -3
  • 根据日期过滤

    • 可以用before或after参数,这两个参数接受多种日期格式
      • `git log –after=”2014-7-1” ``
      • ``git log –after=”yesterday” `
    • 也可以接受时间概念,像”1 week ago”,或者是”yesterday”
      • git log --after="yesterday"
    • 可以用before和after来组成时间区间,同since,until
      • git log --after="2014-7-1" --before="2014-7-4"
  • 根据提交者过滤

    • –auther参数,传入一个正则表达式 可找到正则匹配的所有人,也可直接指定人名
      • git log --author="John/|Mary"
  • 根据提交内容过滤

    • 使用grep参数可以查找参数指定的关键字过滤,使用-i参数还能忽略大小写
      • git log --grep="TEST"
  • 根据文件过滤

    • 直接传入文件或文件及路径可直接过滤出想看的文件
      • git log -- foo.py bar.py
  • 根据改动内容过滤

    • 通过-S””参数来判断引号中的内容过滤
    • -G”” 参数根据正则匹配
      • git log -S"Hello, World!"
  • 根据id范围过滤

    • git log <since>..<until>
    • 当传入的是分支名称时,则表示展示分支独有的提交commit
      • git log <since>..<until>
  • 滤过merge

    • 如不需要merge的commit
      • git log --no-merges
    • 如只看merge
      • git log --merges

查看某次提交

  • 可通过git的GUI工具单独查看,通过输入gitk指令打开
  • 如果在知道commitID的情况下课通过指令git show commitID查看

git rebase命令

git rebase命令与git merge命令一样都是将目标分支的代码合并到本地分支,但实现的流程与效果与merge指令不同

  • git merge 指令是直接将目标分支中的提交合并到本地分支中,当有冲突时,会把额外生成一次合并冲突的提交记录

  • git rebase则是将本地分支中的提交记录保存为补丁(存储在.git/rebase目录),随后将目标分支的代码合并到本地分支中,最后再将暂存的分支重新添加提交到本地分支

关于冲突

在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用”git-add”命令去更新这些内容的索引(index), 然后,无需执行 git-commit,只要执行:

  • $ git rebase --continue

在任何时候,你可以用–abort参数来终止rebase的行动,并且”mywork” 分支会回到rebase开始前的状态。


git特殊命令
https://andrewjiao.github.io/2018/12/24/git命令提升/
作者
Andrew_Jiao
发布于
2018年12月24日
许可协议