由 赵庆鹏创建, 最后修改于十二月 14, 2018
一、文件比较
1. 新建两个文件hello/world,内容可自定义,两个文件的内容,需要不相同,进行文件比对。2. 使用diff -u hello world > diff.txt,进行文件比对,查看效果。3. 使用cp hello world对文件进行覆盖,并使用patch world < diff.txt对world文件进行恢复。4. 使用cp world hello对文件进行覆盖,并使用patch -R hello < diff.txt对hello文件进行恢复。
二、字符集设置
1. 乱码:git config --global core.quotepath false2. 设置字符集:git config --global i18n.logOutputEncoding gbk(log输出)/ git config --global i18n.commitEncoding gbk
三、初始化全局参数
1. 设置全局用户参数:git config --global user.name "yourname"2. 设置全局用户邮箱参数:git config --global user.email "youremail"3. 设置全局用户gitreview参数:git config --global gitreview.username "yourname"4. 设置命令别名:git config --system alias.st status/alias.ci commit/alias.co checkout/alias.br branch5. 设置颜色显示:git config --global color.ui true6. 创建一个目录并初始化git:mkdir demo && git init7. 编辑.git/config文件:git config -e8. 编辑.gitconfig文件:git config -e --global9. 编辑系统配置:git config -e --system10. 删除用户配置信息:git config --unset --global11. 设置全局忽略文件/设置本地忽略文件 git config --global core.excludesfile / git config core.excludesfile
四、操作指令
1. git status 显示工作路径下已修改的文件,-s 精简输出,-b 显示当前工作分支2. git diff -- 显示与上次提交版本文件的不同,HEAD 将工作区和HEAD相对比差异,--cached/–staged 提交暂存区和版本库中文件的差异 非git目录/文件差异比较3. git add & git add -p 把当前所有修改添加到下次提交中/把对某个文件的修改添加到下次提交中 git add -u 将本地有改动(包括修改和删除)的文件标记到暂存区 git add -i 交互式添加文件 git add -f 强制指定文件名4. git grep & git grep 从当前目录的所有文件中查找文本内容/从当前目录的所有文件中查找某一个版本的文本5. git rev-parse --git-dir 显示版本库.git目录位置6. git rev-parse --show-toplevel 显示工作区根目录7. git rev-parse --show-prefix 相对于工作区根目录的相对目录8. git rev-parse --show-cdup 显示从当前目录(cd)后退(up)到工作区的根的深度9. git commit --allow-empty -m "yourmessage" 允许空白提交10. git log --pretty=fuller/raw --graph / --oneline 显示全部commit log信息/显示每个提交对象的parent属性 / 显示跟踪链 / 对父提交的关联实现对提交历史的追溯11. git commit --amend --reset-author 对提交进行修补,以改正前面提交中错误的信息/将author的ID同步进行修改12. git log --stat / --decorate / -p / -m 显示每次提交的文件变更统计 / 显示该提交关联的引用 / 显示日志的同时显示改动 / 显示从哪个提交修改的13. git reset HEAD,缓存区目录树重写,将被master分支指向的目录树替换,工作区不受影响14. git rm --cached 从缓存区删除文件,工作区不做改变15. git checkout . / git checkout -- / git checkout HEAD . / git checkout HEAD 前两者使用暂存区全部的文件或指定的文件替换工作区的文件,后两者使用HEAD指向的master分支中的全部或部分文件替换暂存区和工作区文件16. git clean -fd 清除当前工作区中没有加入版本库的文件和目录(非跟踪文件和目录) -nd 查询哪些文件会被删除,防止误删除17. git ls-tree / ls-files --with-tree 查看暂存区目录树文件大小/查看暂存区目录树存放位置,并指定树的位置18. git write-tree 将暂存区的目录树写入git对象库19. git write-tree | xargs git ls-tree -l -r -t 递归操作显示目录树的内容20. git stash 保存当前工作进度,暂存区/工作区状态保存 list 查看保存的进度 pop [--index] [] 恢复最新保存的进度,提供参数,则从该中恢复,回复后,则删除该 --index 除恢复工作区文件外,还可尝试恢复暂存区 [save [--patch] [-k | --[no-] keep-index] [-q] | --quiet] [] eg: git stash save "message..." --patch 显示工作区和HEAD的差异,通过编辑差异文件,决定最终保存工作区的内容,并排除无关内容 -k 或 --keep-index参数,保存后不会重置暂存区 apply [--index] [] 与pop类似,但不删除恢复的进度 drop [] 删除进度,默认删除最新进度 clear 删除所有进度 branch 基于进度创建分支21. git cat-file -t / -p 查看id的类型 / 查看id的详情 git show --stat 查看和分析某个提交22. git branch 显示当前工作分支 -v 显示详情 23. git reset 重置,将HEAD游标指向任意一个存在的提交ID --hard 破坏工作区未提交的改动 --soft 只修改引用的指向,不改变暂存区和工作区 --mixed 更改引用的指向及重置暂存区,不改变工作区24. git reflog show master / expire --expire= -all 查看master分支修改的记录,用于reset后的恢复 / 强制让之前的记录全部过期25. git merge [-s ] [-X ] ... 合并,将其他分支的提交和当前分支的提交进行合并 -s 设定合并策略 -X 设置合并策略提供附件的参数 / --no-commit 合并后,放入暂存区,检查后,合并到共享仓库 / 合并策略有:① resolve 只能合并两个头,三向合并策略,最安全、最快的策略 ② recursive 只能合并两个头,三向合并策略,默认合并策略 a. ours 冲突时,选择本地当前分支版本,忽略其他版本,若不冲突,则合并他人改动 b. theirs 丢弃自己的版本,选择他们的版本 c. subtree[=path] 子树合并策略 ③ octopus 两个以上的合并头指针,拒绝执行手动解决合并 ④ ours 合并任意数量的头指针,合并结果总是使用当前分支,忽略他人分支 ⑤ subtree 合并A、B,若B、A中一个子树相同,B先匹配A的树结构26. git checkout [-q] [] [–] / git checkout [] / git checkout [-m] {[-b | --orphan] } [] commit为可选项,覆盖工作区,不会该表HEAD头指针 / 改变HEAD头指针,若不使用branch参数,则对工作区进行检查 / 创建和切换新的分支,新的分支以指定的提交开始创建27. git describe 将最新提交显示为一个易记的名称,选取离该提交最近的里程碑作为“基础版本号” --dirty 显示tag版本号中文件已被修改标记 --always 显示精简提交ID28. git mv 修改文件名29. git archive -o HEAD / --format=tar --prefix=1.0/ v1.0 | gzip > foo-1.0.tar.gz 归档压缩 -o 指定压缩文件名 HEAD 指定分支 --format 指定压缩格式 --prefix 指定tag30. gitk -all 显示所有分支 --since="2 weeks ago" 两周内的所有提交 / 某个tag以来,针对dir/file的提交31. git rev-parse --symbolic --branches 显示分支信息 --tags 显示里程碑信息 --glob= 显示定义的所有引用32. git rev-parse --oneline ... 显示分支的所有历史提交 33. git blame 文件追溯 -L n,m 查看从第n行开始,往后m行的数据34. git bisect 二分查找 good/bad 好提交/坏提交 存放位置refs/bisect/good--/bad / reset 结束正在进行的出错的二分查找 / replay logfile 通过日志文件恢复进度,重启二分查找 / run sh