常用的git指令大大大大大大大全

一、文件比较

       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 false

       2.  设置字符集: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 branch

       5.  设置颜色显示:git config --global color.ui true

       6.  创建一个目录并初始化git:mkdir demo && git init

       7.  编辑.git/config文件:git config -e

       8.  编辑.gitconfig文件:git config -e --global

       9.  编辑系统配置:git config -e --system

     10.  删除用户配置信息:git config --unset --global

     11.  设置全局忽略文件/设置本地忽略文件  git config --global core.excludesfile / git config core.excludesfile

四、操作指令

       1.  git status 显示工作路径下已修改的文件,-s 精简输出,-b 显示当前工作分支

       2.  git diff <commit1> <commit2> -- <path> 显示与上次提交版本文件的不同,HEAD 将工作区和HEAD相对比差异,--cached/–staged 提交暂存区和版本库中文件的差异  <path1><path2> 非git目录/文件差异比较

       3.  git add & git add -p <file> 把当前所有修改添加到下次提交中/把对某个文件的修改添加到下次提交中  git add -u 将本地有改动(包括修改和删除)的文件标记到暂存区  git add -i 交互式添加文件  git add -f <filename> 强制指定文件名

       4.  git grep <contect> & git grep <contect> <tag> 从当前目录的所有文件中查找文本内容/从当前目录的所有文件中查找某一个版本的文本

       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 <id> / --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 <file>  从缓存区删除文件,工作区不做改变

     15.  git checkout . / git checkout -- <file> / git checkout HEAD . / git checkout HEAD <file>  前两者使用暂存区全部的文件或指定的文件替换工作区的文件,后两者使用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] [<stash>] 恢复最新保存的进度,提供<stash>参数,则从该<stash>中恢复,回复后,则删除该<stash> --index 除恢复工作区文件外,还可尝试恢复暂存区   [save [--patch] [-k | --[no-] keep-index] [-q] | --quiet] [<message>]  eg: git stash save "message..." --patch 显示工作区和HEAD的差异,通过编辑差异文件,决定最终保存工作区的内容,并排除无关内容  -k 或 --keep-index参数,保存后不会重置暂存区  apply [--index] [<stash>]  与pop类似,但不删除恢复的进度  drop [<stash>]  删除进度,默认删除最新进度  clear 删除所有进度  branch <branchname> <stash> 基于进度创建分支

     21.  git cat-file -t <id>/ -p <id>  查看id的类型 / 查看id的详情   git show <tag> --stat 查看和分析某个提交

     22.  git branch  显示当前工作分支  -v 显示详情 

     23.  git reset  重置,将HEAD游标指向任意一个存在的提交ID  --hard  破坏工作区未提交的改动  --soft  只修改引用的指向,不改变暂存区和工作区  --mixed  更改引用的指向及重置暂存区,不改变工作区

     24.  git reflog show master / expire --expire=<date> -all 查看master分支修改的记录,用于reset后的恢复 / 强制让<date>之前的记录全部过期

     25.  git merge [-s <strategy>] [-X <strategy-option>] <commit> ...  合并,将其他分支的提交和当前分支的提交进行合并 -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] [<commit>] [–] <paths> / git checkout [<branch>] / git checkout [-m] {[-b | --orphan] <new_branch>} [<start_point>]  commit为可选项,覆盖工作区,不会该表HEAD头指针 / 改变HEAD头指针,若不使用branch参数,则对工作区进行检查 / 创建和切换新的分支,新的分支以<start_point>指定的提交开始创建

     27.  git describe 将最新提交显示为一个易记的名称,选取离该提交最近的里程碑作为“基础版本号” --dirty  显示tag版本号中文件已被修改标记  --always 显示精简提交ID

     28.  git mv <old_filename> <new_filename>  修改文件名

     29.  git archive -o <zipfile> HEAD <dir> /  --format=tar --prefix=1.0/ v1.0 | gzip > foo-1.0.tar.gz   归档压缩  -o 指定压缩文件名  HEAD 指定分支  --format 指定压缩格式  --prefix 指定tag

     30.  gitk -all  显示所有分支  --since="2 weeks ago" 两周内的所有提交  <tag> <dir>/<file> 某个tag以来,针对dir/file的提交

     31.  git rev-parse --symbolic --branches  显示分支信息   --tags  显示里程碑信息  --glob=<branch>  显示定义的所有引用

     32.  git rev-parse --oneline <branch1> <branch2> ...  显示分支的所有历史提交  

     33.  git blame <filename>  文件追溯 -L n,m 查看从第n行开始,往后m行的数据

     34.  git bisect 二分查找  good/bad 好提交/坏提交  存放位置refs/bisect/good--/bad  / reset 结束正在进行的出错的二分查找  /  replay logfile 通过日志文件恢复进度,重启二分查找  /  run sh <script>  运行自动化测试脚本

     35.  git cherry-pick <branch> 拣选操作,将其他分支连接到checkout分支,注意,在cherry-pick时,本地未提交的内容,均需要进行提交,否则,会触发cherry-pick的正在进行操作,即amend,操作完成后,需要--continue参数继续。

     36.  git rebase --onto <newbase> <since> <till>  将指定范围内的提交,嫁接到另外一个提交之上   --onto  提交1 提交2  本地提交 / <newbase> 里程碑编号 将提交嫁接到里程碑上 / -i <since>...<till> 交互式操作,将多个提交悉数放在一个文件中进行提交

     37.  git commit-tree 从目录树创建提交

     38.  git revert  反转提交

     39.  git clone 版本库克隆  <repository> <directory>  将前者指向的版本库创建一个克隆到后者目录中 / --bare <repository> <directory.git> 不包含工作区的克隆,不对上游版本库进行注册 / --mirror <repository> <directory.git> 不包含工作区的克隆,对上游版本库进行注册,并可使用git fetch和上游版本库持续同步

     40.  git pull/push  提交/拉回  [<remote-repos> [<refspec>]]  前者参数可省略,是远程版本库的地址或名称,后者为引用  /  git push -f 强制推送  /  git pull == git fetch + git merge

     41.  git pack-refs -all / --all--prune  打包所有refs文件,到packed-refs中,默认90天前记录清理 / 未关闭gc.packrefs,可实现对引用的打包

     42.  git show-index < <index路径> 

     43.  git fsck / git prune  查看版本库中包含的没有被任何引用关联的松散对象 --no-reflogs  找到看不到未被关联到的对象 / 清理未被引用的松散对象

     44.  git gc / --prune=<date> 对分散在 .git/refs下的文件打包到.git/packed-refs中 / 对指定日期之前的未被关联的松散对象进行清理,将时间参数传递给 git prune --expire <date>,默认清楚2周以前未被关联的对象

     45.  git repack 对有引用关联的对象进行打包,未被引用关联的对象不做操作

     46.  git tag  显示当前版本库的tag列表 -n<num> 显示<num>行说明 -a <tagname> [<commit>] / -m <msg> <tagname> [<commit>]  创建带说明的里程碑  -s <tagname> [<commit>] / -u <key-id> <tagname> [<commit>]  创建带GunPG签名的里程碑 -u参数指定私钥进行签名 -d 删除里程碑  <tag><commit-id>  恢复误删除的里程碑  -f / --force  强制覆盖已有的里程碑

     47.  git name-rev  显示提交ID及其对应的一个引用,默认优先使用分支名,若提交上没有相对应的引用,则会使用最新提交上的引用名称并加上向后回溯的符号~<num> --tags 优先使用里程碑

     48.  git ls-remote 查看上游版本库的引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值