git学习笔记

  1. 命令参数自动补齐
    按tab键或2下tab键

  2. 查看git版本
    git –version

  3. 在git命令输出中开启颜色显示
    git config –global color.ui true

  4. 初始化git版本库
    git init
    git init 目录

  5. 将文件暂存到版本库
    git add example.txt

  6. 将所有暂存到版本库的内容都提交到版本库
    git commit -m “example”

  7. 在工作区的文件中搜索内容
    git grep “content”

  8. 查看版本库.git文件夹所在的目录
    git rev-parse –git-dir

  9. 查看工作区根目录
    git rev-parse –show-toplevel

  10. 查看当前目录相对于工作区根目录的相对目录
    git rev-parse –show-prefix

  11. 查看当前目录后退到工作区根目录的深度
    git rev-parse –show-cdup

  12. 显示分支提交的id
    git rev-parse mater
    git rev-parse HEAD

  13. 查看git提交日志
    git log
    git log –stat 查看每次提交的文件变更统计
    git log –pretty=oneline 日志精简输出
    git log –pretty=fuller 详细日志
    git log –pretty=raw –graph id 查询日志跟踪链
    git log –stat -2 查看最新的2次提交

  14. git diff 三种文件状态对比
    git diff 工作区和暂存区的对比
    git diff HEAD 工作区和版本库的对比
    git diff –cached或–staged 暂存区和版本库的对比
    git diff B A 比较里程碑B和A
    git diff A 比较工作区和里程碑A
    git diff –cached A 比较暂存区和里程碑A
    git diff commit1 commit2 –paths 比较2个提交的文件路径下的差异
    git diff –word-diff 逐词比较

  15. git工作原理
    git学习笔记_第1张图片

  16. git reset HEAD
    暂存区的目录树会被改写,被版本库HEAD的目录树替代
    工作区不受影响

  17. git rm –cached file
    在暂存区中直接删除文件,工作区不受影响

  18. git checkout
    git checkout . 用暂存区的全部文件替换工作区的文件
    git checkout – file 用暂存区的指定文件替换工作区的文件
    替换后,工作区的改动会被清空
    git checkout HEAD . 用版本库的全部文件替换暂存区和工作区的文件
    git checkout HEAD 用版本库的指定文件替换暂存区 和工作区的文件

  19. 显示版本库的目录树
    git ls-tree -l HEAD

  20. 显示暂存区的目录树
    git ls-files -s

  21. 清空工作区中没有加入版本库的文件和目录
    git clean -fd

  22. 保存当前工作进度
    git stash 对暂存区和工作区的状态进行保存
    git stash list查看保存的进度
    git stash pop 从最近保存的进度恢复,保存的进度会被删除
    git stash apply 从最近保存的进度恢复,保存的进度不会被删除
    git stash pop [–index] [stash] 加index还会恢复暂存区
    git stash drop [stash] 删除一个进度
    git stash clear 清空
    git stash branch new_branch [stash] 基于进度创建分支

  23. 查看40位对象id的类型
    git cat-file -t id
    git cat-file -p id 查看对象的内容

  24. git对象库各个对象之间的关系
    git学习笔记_第2张图片

  25. 工作分支
    git branch 显示当前工作分支

  26. git版本库结构图
    git学习笔记_第3张图片

  27. git重置master游标
    git reset –hard HEAD^
    git reset –hard id

  28. git恢复重置前的提交
    git reflog show master | head -5

    git reset –hard master@{2}

  29. 执行合并操作
    git merge id

  30. git reset命令详解
    用法一:git reset [-q] [commit] [–] paths
    用法二:git reset [–soft| –mixed | –hard| –merge| –keep] [-q] [commit]
    commit是可选项,可以使用引用或ID,省略commit相当于使用了HEAD的指向作为提交ID
    用法一和二的主要区别是是否包含paths,在paths前面可以加–作为分割,避免路径和引用冲突
    用法一::不会重置引用,不会改变工作区,而是用指定版本库commit下的文件替换暂存区中文件
    用户二::会重置引用,还可能会对暂存区和工作区进行重置
    git学习笔记_第4张图片
    用法实例:

    • git reset
      不会重置引用,重置暂存区,不会重置工作区。(不会重置引用的原因是重置引用到HEAD相当于没有重置)
    • git reset HEAD
      同上
    • git reset – filename
      重置暂存区的filename文件,不做其他操作
    • git reset HEAD – filename
      同上
    • git reset –soft HEAD^
      只改变引用,向前回退一次。工作区和暂存区不改变
    • git reset HEAD^
      相当于加了–mixed,工作区不改变,引用向前回退一次,暂存区回退到前一次提交
    • git reset –mixed HEAD^
      同上
    • git reset –hard HEAD^
      彻底撤销最近的提交。引用回退,工作区和暂存区也回退
  31. git checkout命令详解
    git checkout和git reset的主要区别是git checkout用于覆盖工作区,git reset用于重置暂存区
    用法一:git checkout [-q] [commit] – paths
    用法二:git checkout [branch]
    用法三:git checkout [-m] [[-b|–orphan] new_branch] [start_point]
    用法一主要是用版本库的文件覆盖暂存区和工作区中对应的文件。如果commit省略,则用暂存区的文件覆盖工作区的文件;不会改变HEAD头指针
    用法二主要是用于分支切换,会改变HEAD头指针。省略branch则相当于对工作区进行状态检查,汇总显示工作区、暂存区和HEAD的差异
    用法三主要是创建和切换到新的分支new_branch,新的分支从start_point指定的提交开始创建。

  32. 在暂存区删除文件
    git rm paths 删除指定文件
    git add -u 提交工作区改动文件到暂存区,包括修改和删除,不包括新增
    git add -A 将新增、修改和删除都提交到暂存区

  33. 在工作区和暂存区改文件名
    git mv file1 file2

  34. 文件忽略
    方法一:在工作区中创建一个.gitignore文件,把要忽略的文件以通配符的方式写入。
    *.a 忽略所有.a的文件
    !lib.a 不忽略lib.a文件
    /TODA 忽略toda目录的文件,不忽略 toda子目录的文件
    build/ 忽略所有build目录下的文件
    doc/*.txt 忽略所有doc目录下的.txt文件,不忽略doc子目录下的txt文件
    方法二:在.git目录下的一个文件.git/info/exclude设置
    方法三:通过git的全局配置变量core.excludesfile 指定
    git config –global core.excludesfile /home/file

  35. 文件归档
    基于最新提交建立归档文件
    git archive -o latest.zip HEAD
    只将目录src和doc建立到归档文件
    git archive -o partial.tar HEAD src doc
    基于里程碑v1.0建立归档
    git archive –format=tar –prefix=1.0/ v1.0 | gzip > foo-1.0.tar.gz

  36. 查看所有的提交记录
    git rev-list HEAD

  37. 打开git GUI界面
    git gui 或git citool

  38. 显示分支
    git rev-parse –symbolic –branches

  39. 显示里程碑
    git rev-parse –symbolic –tags

  40. 显示定义的所有引用
    git rev-parse –symbolic –glob=refs/*

  41. 文件追溯:逐行查找每行的版本
    git blame filenames
    git blame -L 6,+5 filenames 显示文件6到11行

  42. 二分查找
    git bisect

  43. 修补提交
    单步修补:
    git checkout HEAD^ – paths 先还原
    git commit -amend -m “zzh” 修补提交
    多步修补:
    git reset –soft HEAD^^ 版本库回到2个步骤之前
    git commit -m “zzh1” 合并后面的2个提交为一个提交

  44. 拣选命令git cherry-pick
    从众多的提交中挑选一个提交应用到当前工作分支上
    git cherry-pick master^

  45. 提交时重用一个提交的提交说明
    git commit -C C

  46. 将master指向最新的提交上
    git reset –hard HEAD@{1}

  47. 创建分支并将分支合并回主干的过程:
    比如A->B->C->D->E->F
    现在要把CD进行融合
    git checkout D
    git reset –soft HEAD^
    git commit -C C
    git cherry-pick E
    git cherry-pick F
    git checkout master
    git reset –hard HEAD@{1}

  48. 设置里程碑
    用法1:git tag [tagname] [commit]
    用法2:git tag -a [tagname] [commit]
    用法3:git tag -m [msg] [tagname] [commit]
    用法4:git tag -s [tagname] [commit]
    用法5:git tag -u [key-id] [tagname] [commit]
    用法2、3会带有说明,用法4、5会带有GnuPG签名
    git tag A 在最新的提交中设置里程碑A
    git tag B HEAD^
    git tag C HEAD~2 前2次提交

  49. 变基操作
    将制定范围内的提交嫁接到另外一个提交上
    用法1:git rebase –onto [newbase] [since] [till]
    用法2:git rebase –onto [newbase] [since]
    用法3:git rebase [since] [till]
    用法4:git rebase [since]
    用法5:git rebase -i …
    用法6:git rebase –continue
    用法7:git rebase –skip
    用法8:git rebase –abort

    用法6会先解决冲突后继续操作
    用法7会跳过当前的冲突提交继续操作
    用法8会终止操作
    [since]..[till]版本范围语法是从since的后一个提交开始到till的所有提交,包含till

    git rebase –onto C E^ F 把E到F的提交变基到C上
    git rebase -onto C D 把D后一个提交到最新提交变基到C上

  50. 反转提交
    git revert HEAD 将当前的提交再反向提交一次

  51. git clone
    用法1:git clone [repository] [directory]
    用法2:git clone –bare [repository] [directory.git]
    用法3:git clone –mirror [repository] [directory.git]

    用法1将版本库克隆岛directory目录下,目录相当于版本库的工作区

  52. 查看上游版本库的注册信息
    git remote -v

  53. 禁止非快进式推送
    即禁止覆盖push
    git –git-dir=/path/to/repos/a.git config receive.denyNonFastForwards true

  54. git fetch 获取版本库最新的版本

  55. git merge 合并操作

  56. 里程碑
    git tag 显示当前版本库的里程碑列表
    git tag -n1 每个里程碑最多显示一行说明
    git tag -l jx* 使用通配符对里程碑进行过滤
    git log –decorate 可以看到提交对应的里程碑
    git describe 显示提交的里程碑或祖先的里程碑
    git name-rev 显示分支名
    git name-rev –tag 显示里程碑
    git cat-file -t tag2 检查里程碑指向的对象
    git cat-file -p tag2 检查里程碑的内容
    git tag -d mytag 删除里程碑
    git push origin :tagname 删除远程版本库的里程碑

  57. 分支命令git branch
    用法1:git branch
    用法2:git branch [branchname]
    用法3:git branch [branchname] [startpoint]
    用法4:git branch -d [branchname]
    用法5:git branch -D [branchname]
    用法6:git branch -m [oldbranch] [newbranch]
    用法7:git branch -M [oldbranch] [newbranch]
    用法1用于显示本地分支列表
    用法2、3用于创建分支
    用法4、5用于删除分支,4会检查 分支是否合并到其他分支,否则拒绝删除;5会强制删除
    用法6、7用于重命名分支,如果版本库存在新的名称,用法6拒绝重命名,用法7强制执行

  58. 将分支代码合并到主线
    (1)工作区切换到主线
    git checkout master
    (2)执行合并命令
    git merge 分支名
    (3)完成本地分支向远程分支的同步
    git push
    (4)删除分支
    git branch -d 分支名

你可能感兴趣的:(其他,git)