[TOC] <br/><br/><br/> # <b style="color:#4F4F4F;">简介说明</b> 原文链接: - [官网文档](https://git-scm.com/docs) - [PR实战](https://zhuanlan.zhihu.com/p/51199833) - [Git 运行配置(git config、gitk、git gui)](https://www.jianshu.com/p/f29ca723db4f) ``` 版本:git指令指南 作用:git指令指南 ``` <br/> # <b style="color:#4F4F4F;">指令指南</b> <br/> # <span style="color:#619BE4">git</span> ***** 版本库管理工具 <br/> ### 参数说明 <b style="color:#808080;">(\--no-pager)</b> * 类型:字符串 * 默认值:无 * 描述:不分页输出 * 可选值:[ ] <br/> # <span style="color:#619BE4">git config</span> ***** 本地配置文件操作,用于基本设置 <br/> ### 参数说明 <b style="color:#808080;">(\-\-list) :</b> * 类型:字符串 * 默认值:无 * 描述:查看所有配置信息 * 可选值:[ ] <b style="color:#808080;">(\-\-system) :</b> * 类型:字符串 * 默认值:无 * 描述:配置系统级别参数 * 可选值:[ ] <b style="color:#808080;">(\-\-global) :</b> * 类型:字符串 * 默认值:无 * 描述:配置用户级别参数 * 可选值:[ ] <b style="color:#808080;">(\-\-local) :</b> * 类型:字符串 * 默认值:无 * 描述:配置当前仓库级别参数 * 可选值:[ ] <b style="color:#808080;">-unset :</b> * 类型:字符串 * 默认值:无 * 描述:从配置文件删除匹配的键 * 可选值:[ ] <b style="color:#808080;">-unset-all :</b> * 类型:字符串 * 默认值:无 * 描述:删除所有键 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1. 查看所有配置的信息</span> ``` 控制台输入命令:git config --list ``` ![git配置](https://img.kancloud.cn/15/ff/15ff515a8a8e6f5f949e7b044e1ce201_540x322.png) <br/> <span style="color:red">2. 首次安装必要配置</span> ``` # 设置用户名 git config --global user.name "lisys" # 默认编辑器 git config --global core.editor # 解决冲突的工具 git config --global merge.tool # 永久记录密码【二选一】 git config --global credential.helper store # 临时记录密码【二选一】 git config --global credential.helper cache # 提交检出均不转换回车换行 git config --global core.autocrlf false # 拒绝提交包含混合换行符的文件 git config --global core.safecrlf true # 允许提交包含混合换行符的文件 git config --global core.safecrlf false # 提交包含混合换行符的文件时给出警告 git config --global core.safecrlf warn # 配置子模块访问URL git config submodule.DbConnector.url <私有URL> # 将子模块更新配置为日志,之后git diff可以直接看到 git config --global diff.submodule log # 启用Sparse Checkout模式 git config core.sparsecheckout true # 配置自动gc git config --global gc.auto 0 git config http.postBuffer git config --global http.lowSpeedLimit 0 git config --global http.lowSpeedTime 999999 # 解决 Windows Git Bash、Linux 下的中文转码问题 git config --global core.quotepath false # 设置大小写敏感,保持 Mac/Win/Linux一致性;在目录名大小写修改时,git可正常提交; git config --global core.ignorecase false # 配置socks5代理 git config --global http.proxy socks5://127.0.0.1:2083 git config --global https.proxy socks5://127.0.0.1:2083 git config --global https.proxy socks5://127.0.0.1:1080 git config --global --unset https.proxy ``` <span style="color:red">3. 配置级别</span> ``` config 配置有system级别 global(用户级别) 和local(当前仓库) 查看系统config git config --system --list 查看用户config git config --global --list 查看本地库config git config --local --list ``` <span style="color:red">4. git log中文显示</span> ``` git config --global i18n.commitencoding utf-8 git config --global i18n.logoutputencoding utf-8 set LESSCHARSET=utf-8 ``` <span style="color:red">5. 配置路径替换,使用git前缀会被自动换成https</span> ``` git config --global url."https://github".insteadOf git://github ``` <br/> # <span style="color:#619BE4">git clone</span> ***** 克隆远端仓库 <br/> ### 参数说明 <b style="color:#808080;">url:</b> * 类型:字符串 * 默认值:无 * 描述:远端仓库地址 * 可选值:[ ] <b style="color:#808080;">(\-\-recursive):</b> * 类型:字符串 * 默认值:无 * 描述:递归克隆子项目 * 可选值:[ ] <b style="color:#808080;">(\-\-branch):</b> * 类型:字符串 * 默认值:无 * 描述:clone指定分支 * 可选值:[ ] <b style="color:#808080;">(\-\-depth=):</b> * 类型:字符串 * 默认值:无 * 描述:clone层级,如果是1则只克隆最新一次提交 * 可选值:[ 1 ] <br/> ### 示例内容 <span style="color:red">1. 克隆带有子模块的项目</span> ``` git clone url 路径 --recursive ``` <span style="color:red">2. 克隆指定分支</span> ``` git clone --branch grizzly-eol https://github.com/openstack/keystone.git git clone --branch [tags标签] [git地址] ``` <span style="color:red">3. 克隆共享文件夹Git库</span> ``` git clone \\127.0.0.1\Users\TechService\Desktop\test ``` <br/> # <span style="color:#619BE4">git submodule</span> ***** 子模块操作 <br/> ### 参数说明 <b style="color:#808080;">add</b> * 类型:字符串 * 默认值:无 * 描述:为当前项目添加子模块库 * 可选值:[ ] <b style="color:#808080;">init</b> * 类型:字符串 * 默认值:无 * 描述:初始化子模块配置 * 可选值:[ ] <b style="color:#808080;">update</b> * 类型:字符串 * 默认值:无 * 描述:更新子模块内容 * 可选值:[ ] <b style="color:#808080;">foreach</b> * 类型:字符串 * 默认值:无 * 描述:遍历子模块执行后面的命令 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1. 第一次clone项目后初始化子模块</span> ``` git submodule init git submodule update 或 git submodule update --init --recursive ``` <span style="color:red">2. Git 将会自动进入子模块然后抓取并更新</span> ``` 控制台输入命令:git submodule update --remote DbConnector 控制台输入命令:git submodule update --remote 不指定库,更新所有子模块 其它方法: 进入子模块目录,执行更新 git pull git submodule update ``` <span style="color:red">3. 设置子模块默认拉取分支</span> ``` git config -f .gitmodules submodule.DbConnector.branch stable ``` <span style="color:red">4. 添加子模块</span> ``` git submodule add <url> <path> ``` <span style="color:red">5. 删除子模块</span> ``` 1. rm -rf 子模块目录 删除子模块目录及源码 2. vi .gitmodules 删除项目目录下.gitmodules文件中子模块相关条目 3. vi .git/config 删除配置项中子模块相关条目 4. rm .git/module/* 删除模块下的子模块目录,每个子模块对应一个目录,注意只删除对应的子模块目录即可 执行完成后,再执行添加子模块命令即可,如果仍然报错,执行如下: git rm --cached 子模块名称 完成删除后,提交到仓库即可。 ``` <span style="color:red">6. 推送子模块</span> ``` 进入子模块目录 git checkout master git commit -am "描述内容" git push ``` <span style="color:red">7. 子模块修改与远端合并到本地</span> ``` 进入子模块目录 git checkout 分支 git submodule update --remote --merge git commit -am '提交子分支更改' 进入主目录 git submodule update --remote --rebase git push --recurse-submodules=check # 检查所有子模块是否已经push --recurse-submodules=on-demand # git会尝试帮你推送子模块 ``` <br/> # <span style="color:#619BE4">git init</span> ***** 初始化仓库 <br/> ### 参数说明 <b style="color:#808080;">str:</b> * 类型:字符串 * 默认值:无 * 描述:初始化仓库目录位置,可选 * 可选值:[ ] <b style="color:#808080;">(\-\-bare):</b> * 类型:字符串 * 默认值:无 * 描述:创建没有工作目录的版本库,用于作为服务端 * 可选值:[ ] <br/> # <span style="color:#619BE4">git add</span> ***** 暂存区操作 <br/> ### 参数说明 <b style="color:#808080;">str:</b> * 类型:字符串 * 默认值:无 * 描述:放入暂存区的修改文件 * 可选值:[ .{所有修改文件} ] <b style="color:#808080;">-f:</b> * 类型:字符串 * 默认值:无 * 描述:强制添加忽略掉的文件 * 可选值:[] <br/> # <span style="color:#619BE4">git mv</span> ***** 更换文件位置或者重命名 <br/> ### 参数说明 <b style="color:#808080;">source:</b> * 类型:字符串 * 默认值:无 * 描述:源文件名称 * 可选值:[ ] <b style="color:#808080;">destination:</b> * 类型:字符串 * 默认值:无 * 描述:改名后的名称 * 可选值:[ ] <br/> # <span style="color:#619BE4">git rm</span> ***** 删除版本库的内容 <br/> ### 参数说明 <b style="color:#808080;">str:</b> * 类型:字符串 * 默认值:无 * 描述:删除的文件名称 * 可选值:[ ] <b style="color:#808080;">\-f:</b> * 类型:字符串 * 默认值:无 * 描述:强制删除,可选 * 可选值:[ ] <b style="color:#808080;">\-n:</b> * 类型:字符串 * 默认值:无 * 描述:实际上不要删除任何文件,相反,只需显示它们是否存在于索引中,否则会被命令删除 * 可选值:[ ] <b style="color:#808080;">\-r:</b> * 类型:字符串 * 默认值:无 * 描述:在给出前导目录名称时允许递归删除 * 可选值:[ ] <b style="color:#808080;">(-\-cached):</b> * 类型:字符串 * 默认值:无 * 描述:仅从缓存(暂存)区删除,可选 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1. 举例说明</span> ``` 仅仅在暂存区删除内容 git rm --cached readme.txt 在暂存区和工作区同时删除 git rm readme.txt 清空暂存区内容 rm .git/index ``` <span style="color:red">2. 删除远程文件</span> ``` # 预览将要删除的文件 git rm -r -n --cached 文件/文件夹名称 # 确定无误后删除文件 git rm -r --cached 文件/文件夹名称 ``` <br/> # <span style="color:#619BE4">git clean</span> ***** 清除工作区内容 <br/> ### 参数说明 <b style="color:#808080;">\-d:</b> * 类型:字符串 * 默认值:无 * 描述:删除未提交内容 * 可选值:[ ] <b style="color:#808080;">\-f:</b> * 类型:字符串 * 默认值:无 * 描述:强制操作 * 可选值:[ ] <br/> # <span style="color:#619BE4">git stash</span> ***** 将git版本控制中的内容储藏起来,方便分支切换 <br/> ### 参数说明 <b style="color:#808080;">list:</b> * 类型:字符串 * 默认值:无 * 描述:查看stash了哪些存储 * 可选值:[ ] <b style="color:#808080;">show:</b> * 类型:字符串 * 默认值:无 * 描述:显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num} * 可选值:[ ] <b style="color:#808080;">save:</b> * 类型:字符串 * 默认值:无 * 描述:将暂存区的内容临时存起来 * 可选值:[ ] <b style="color:#808080;">apply:</b> * 类型:字符串 * 默认值:无 * 描述:应用某个存储,但不会把存储从存储列表中删除 * 可选值:[ ] <b style="color:#808080;">pop:</b> * 类型:字符串 * 默认值:无 * 描述:将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下 * 可选值:[ ] <b style="color:#808080;">drop:</b> * 类型:字符串 * 默认值:无 * 描述:丢弃stash@{$num}存储,从列表中删除这个存储 * 可选值:[ ] <b style="color:#808080;">clear:</b> * 类型:字符串 * 默认值:无 * 描述:删除所有缓存的stash * 可选值:[ ] <b style="color:#808080;">\-p(\-\-patch):</b> * 类型:字符串 * 默认值:无 * 描述:显示内容输出patch格式内容 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1. 举例说明</span> ``` 将暂存区的内容临时存起来 git stash save "暂存" 显示第$num个存储的改动 git stash show stash@{$num} -p ``` <br/> # <span style="color:#619BE4">git cherry-pick</span> ***** 把指定的分支放到当前的提交中 <br/> ### 示例内容 <span style="color:red">1. 举例说明</span> ``` 如挑拣commit id 94d3002的提交到当前分支 git cherry-pick 94d3002 ``` <br/> # <span style="color:#619BE4">git sparse-checkout</span> ***** 初始化和修改稀疏签出 <br/> ### 参数说明 <b style="color:#808080;">init:</b> * 类型:字符串 * 默认值:无 * 描述:启用稀疏迁出 * 可选值:[ ] <b style="color:#808080;">disable:</b> * 类型:字符串 * 默认值:无 * 描述:禁用稀疏迁出 * 可选值:[ ] <b style="color:#808080;">list:</b> * 类型:字符串 * 默认值:无 * 描述:查看匹配列表 * 可选值:[ ] <b style="color:#808080;">add:</b> * 类型:字符串 * 默认值:无 * 描述:添加匹配列表 * 可选值:[ ] <b style="color:#808080;">set:</b> * 类型:字符串 * 默认值:无 * 描述:设置匹配列表 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1. 文件配置方式</span> ``` git init new.project && cd new.project git config core.sparseCheckout true // 添加目录到checkout的列表 ,也可以使用文本编辑 echo '/ajax/libs/jquery/*' >> .git/info/sparse-checkout git remote add origin git://github.com/cdnjs/cdnjs.git git pull origin master ``` <br/> # <span style="color:#619BE4">git format-patch</span> ***** 生成patch文件 <br/> # <span style="color:#619BE4">git apply</span> ***** 查看和修改patch文件 <br/> # <span style="color:#619BE4">git am</span> ***** 应用patch文件 <br/> # <span style="color:#619BE4">git bisect</span> ***** 使用二分法定位出错误的commit版本 <br/> ### 示例内容 <span style="color:red">1. 举例说明</span> ``` git bisect start [终点] [起点] git bisect good git bisect bad # 退出查错,回到最近一次的代码提交 git bisect reset ``` <br/> # <span style="color:#619BE4">git diff</span> ***** 对比文件版本不同之处 <br/> ### 参数说明 <b style="color:#808080;">(\--cached)</b> * 类型:字符串 * 默认值:无 * 描述:查看与缓存(暂存)区区别,可选 * 可选值:[ ] <b style="color:#808080;">(\--submodule)</b> * 类型:字符串 * 默认值:无 * 描述:查看子模块 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1. 举例说明</span> ``` git diff 27d76d0 417dc0c ``` <br/> # <span style="color:#619BE4">git grep</span> ***** 检索文件中的文本内容 <br/> # <span style="color:#619BE4">git reflog</span> ***** 查看操作过的日志 <br/> # <span style="color:#619BE4">git log</span> ***** 日志系统 <br/> ### 参数说明 <b style="color:#808080;">-p</b> * 类型:字符串 * 默认值:无 * 描述:按补丁格式显示每个更新之间的差异 * 可选值:[ ] <b style="color:#808080;">(\--oneline)</b> * 类型:字符串 * 默认值:无 * 描述:显示简洁版日志,可选 * 可选值:[ ] <b style="color:#808080;">(\--graph)</b> * 类型:字符串 * 默认值:无 * 描述:可视化分支,可选 * 可选值:[ ] <b style="color:#808080;">(\--reverse)</b> * 类型:字符串 * 默认值:无 * 描述:逆向显示所有日志,可选 * 可选值:[ ] <b style="color:#808080;">(\--no-merges)</b> * 类型:字符串 * 默认值:无 * 描述:隐藏合并提交 * 可选值:[ ] <b style="color:#808080;">(\--pretty)</b> * 类型:字符串 * 默认值:无 * 描述:美化输出内容 * 可选值:[ format:\<string> | tformat:\<string> ] <b style="color:#808080;">(\--format)</b> * 类型:字符串 * 默认值:无 * 描述:美化输出内容 * 可选值:[ ] <b style="color:#808080;">(\--stat)</b> * 类型:字符串 * 默认值:无 * 描述:Generate a diffstat * 可选值:[ ] <b style="color:#808080;">(\--numstat)</b> * 类型:字符串 * 默认值:无 * 描述:以十进制表示法和不带缩写的路径名显示添加和删除的行数,使其更便于机器使用 * 可选值:[ ] <b style="color:#808080;">(\--author)</b> * 类型:字符串 * 默认值:无 * 描述:查看指定用户提交的日志,可选 * 可选值:[ ] <b style="color:#808080;">(\--since)</b> * 类型:字符串 * 默认值:无 * 描述:指定日期范围,可选 * 可选值:[ ] <b style="color:#808080;">(\--before)</b> * 类型:字符串 * 默认值:无 * 描述:指定日期范围,可选 * 可选值:[ {3.weeks.ago} ] <b style="color:#808080;">(\--until)</b> * 类型:字符串 * 默认值:无 * 描述:指定日期范围,可选 * 可选值:[ ] <b style="color:#808080;">(\--after)</b> * 类型:字符串 * 默认值:无 * 描述:指定日期范围,可选 * 可选值:[ {2010-04-18} ] <b style="color:#808080;">-[n]</b> * 类型:字符串 * 默认值:无 * 描述:n代表查看的行数,可选 * 可选值:[ ] <br/> # <span style="color:#619BE4">git show</span> ***** 查看指定的tag的版本信息,包含节点ID,可用于回退 <br/> # <span style="color:#619BE4">git status</span> ***** 查看仓库的状态,缓冲区 <br/> ### 参数说明 <b style="color:#808080;">-s</b> * 类型:字符串 * 默认值:无 * 描述:使用精简模式显示,可选 * 可选值:[ ] <b style="color:#808080;">(\-\-ignored)</b> * 类型:字符串 * 默认值:无 * 描述:显示被忽略的文件 * 可选值:[ ] <br/> # <span style="color:#619BE4">git update-index</span> ***** 将工作树中的文件内容注册到索引 <br/> ### 参数说明 <b style="color:#808080;">(\-\-assume-unchanged) :</b> * 类型:字符串 * 默认值:无 * 描述:忽略已经是追踪状态的文件,但是无法将这个忽略状态提交至远程仓库,只对当前本地工程有效 * 可选值:[ ] <b style="color:#808080;">(\-\-no-assume-unchanged) :</b> * 类型:字符串 * 默认值:无 * 描述:取消忽略 * 可选值:[ ] <b style="color:#808080;">(\-\-skip-worktree) :</b> * 类型:字符串 * 默认值:无 * 描述: 假装它的工作目录版本是最新的并且读取索引版本 * 可选值:[ ] <b style="color:#808080;">(\-\-no-skip-worktree) :</b> * 类型:字符串 * 默认值:无 * 描述:取消跳过 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1. 举例说明</span> ``` # 查看忽略了哪些文件 git ls-files -v | grep '^h ' git ls-files -v | grep '^h ' | awk '{print $2}' # 查看被skip-worktree 的文件列表 git ls-files -v | grep '^S ' ``` <br/> # <span style="color:#619BE4">git ls-files</span> ***** 查看暂存区文件信息 <br/> ### 参数说明 <b style="color:#808080;">-s(\-\-stage)</b> * 类型:字符串 * 默认值:无 * 描述:显示mode以及文件对应的Blob对象,进而我们可以获取暂存区中对应文件里面的内容 * 可选值:[ ] <b style="color:#808080;">-c(\-\-cached)</b> * 类型:字符串 * 默认值:无 * 描述:查看暂存区中文件 * 可选值:[ ] <b style="color:#808080;">-m(\-\-midified)</b> * 类型:字符串 * 默认值:无 * 描述:查看修改的文件 * 可选值:[ ] <b style="color:#808080;">-d(\-\-delete)</b> * 类型:字符串 * 默认值:无 * 描述:查看删除过的文件 * 可选值:[ ] <b style="color:#808080;">-o(\-\-other)</b> * 类型:字符串 * 默认值:无 * 描述:查看没有被git跟踪的文件 * 可选值:[ ] <br/> # <span style="color:#619BE4">git cat-file</span> ***** 提供资源库对象的内容或类型和大小信息 <br/> ### 参数说明 <b style="color:#808080;">-t</b> * 类型:字符串 * 默认值:无 * 描述:可以查看object的类型 * 可选值:[ ] <b style="color:#808080;">-p</b> * 类型:字符串 * 默认值:无 * 描述:可以查看object储存的具体内容 * 可选值:[ ] <br/> # <span style="color:#619BE4">git check-ignore</span> ***** 查看文件是否被忽略 <br/> ### 参数说明 <b style="color:#808080;">\-v</b> * 类型:字符串 * 默认值:无 * 描述:显示详细信息说明 * 可选值:[ ] <br/> # <span style="color:#619BE4">git branch</span> ***** 查看所有分支 <br/> ### 参数说明 <b style="color:#808080;">str</b> * 类型:字符串 * 默认值:无 * 描述:创建名称为指定内容的分支 * 可选值:[ ] <b style="color:#808080;">\-d</b> * 类型:字符串 * 默认值:无 * 描述:删除名称为指定内容的分支 * 可选值:[ ] <b style="color:#808080;">\-m</b> * 类型:字符串 * 默认值:无 * 描述:重命名本地分支 * 可选值:[ ] <b style="color:#808080;">\-a</b> * 类型:字符串 * 默认值:无 * 描述:查看所有分支,包含所有分支 * 可选值:[ ] <b style="color:#808080;">\-r</b> * 类型:字符串 * 默认值:无 * 描述:查看远程分支 * 可选值:[ ] <b style="color:#808080;">\-vv</b> * 类型:字符串 * 默认值:无 * 描述:详细显示,查看关联情况 * 可选值:[ ] <b style="color:#808080;">(--set-upstream-to=)</b> * 类型:字符串 * 默认值:无 * 描述:指定关联远程分支 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1. 设置远程分支与本地分支关联</span> ``` git branch --set-upstream-to=origin/<branch> master ``` <span style="color:red">2. 重命名分支并提交</span> ``` 重命名 git branch -m oldBranchName newBranchName 删除远程分支:git push origin :oldBranchName 将重命名过的分支提交:git push origin newBranchName ``` <br/> # <span style="color:#619BE4">git switch</span> ***** 切换分支 <br/> # <span style="color:#619BE4">git checkout</span> ***** 切换分支 <br/> ### 参数说明 <b style="color:#808080;">hash</b> * 类型:字符串 * 默认值:无 * 描述:从某个特定版本检出文件 * 可选值:[ ] <b style="color:#808080;">str</b> * 类型:字符串 * 默认值:无 * 描述:指定要切换的分支名称 * 可选值:[ ] <b style="color:#808080;">\-b</b> * 类型:字符串 * 默认值:无 * 描述:创建并切换,如果关联远程分支,并切换使用git checkout -b 1.3 origin/release-1.3 * 可选值:[ ] <b style="color:#808080;">\-f</b> * 类型:字符串 * 默认值:无 * 描述:强制切换,会删除之前未提交文件 * 可选值:[ ] <b style="color:#808080;">\(--orphan)</b> * 类型:字符串 * 默认值:无 * 描述:创建的分支没有任何的提交历史,但是当前分支的内容一一俱全。 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1.根据远程分支开辟新的本地分支【拉取远程分支到本地】</span> ``` 控制台输入命令:git checkout -b 本地分支名 origin/serverfix ``` <span style="color:red">2.拉取暂存区文件到工作区</span> ``` -- 类似转义符 例如有个文件和master同名,想要指定检索出该文件需要加 -- 控制台输入命令: git checkout -- <file> ``` <span style="color:red">3.切换tag</span> ``` 跟分支一样,可以直接切换到某个tag去。这个时候不位于任何分支, 处于游离状态,可以考虑基于这个tag创建一个分支。 控制台输入命令: git checkout [tag] ``` <span style="color:red">4. 检出服务器端代码</span> ``` git checkout -f ``` <br/> # <span style="color:#619BE4">git commit</span> ***** 版本库提交 <br/> ### 参数说明 <b style="color:#808080;">\-m</b> * 类型:字符串 * 默认值:无 * 描述:描述本次提交 * 可选值:[ ] <b style="color:#808080;">\-a</b> * 类型:字符串 * 默认值:无 * 描述:自动执行git add . * 可选值:[ ] <b style="color:#808080;">(\-\-no-verify)</b> * 类型:字符串 * 默认值:无 * 描述:跳过验证钩子 * 可选值:[ ] <b style="color:#808080;">(\-\-amend)</b> * 类型:字符串 * 默认值:无 * 描述:撤销上一次提交 并将暂存区文件重新提交 * 可选值:[ ] <b style="color:#808080;">(\-\-fixup)</b> * 类型:字符串 * 默认值:无 * 描述:提交历史中创建一个新的提交,该提交被标记为对之前某个特定提交的修复 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1. 提交规范</span> ``` <type>: <subject> type 用于说明 commit 的类别 * build:主要目的是修改项目构建系统(例如 glup,webpack,rollup 的配置等)的提交 * ci:主要目的是修改项目继续集成流程(例如 Travis,Jenkins,GitLab CI,Circle等)的提交 * docs:文档更新 * feat:新增功能 * fix:bug 修复 * test:增加测试 * perf:性能优化 * refactor:重构代码(既没有新增功能,也没有修复 bug) * style:不影响程序逻辑的代码修改(修改空白字符,补全缺失的分号等) * test:新增测试用例或是更新现有测试 * revert:回滚某个更早之前的提交 * chore:不属于以上类型的其他类型(日常事务) ``` <br/> # <span style="color:#619BE4">git merge</span> ***** 合并分支 <br/> ### 参数说明 <b style="color:#808080;">str</b> * 类型:字符串 * 默认值:无 * 描述:将指定分支合并到当前分支 * 可选值:[ ] <b style="color:#808080;">(\-\-commit)</b> * 类型:字符串 * 默认值:无 * 描述:合并后产生一个合并结果的commit节点 * 可选值:[ ] <b style="color:#808080;">(\-\-no-commit)</b> * 类型:字符串 * 默认值:无 * 描述:为了防止合并失败并不自动提交 * 可选值:[ ] <b style="color:#808080;">(\-\-ff)</b> * 类型:字符串 * 默认值:无 * 描述:当使用fast-forward模式进行合并时,将不会创造一个新的commit节点。默认情况下,git-merge采用fast-forward模式 * 可选值:[ ] <b style="color:#808080;">(\-\-squash)</b> * 类型:字符串 * 默认值:无 * 描述:顶部节点将会压缩合并在一起,默认不提交,该参数和--no-ff冲突 * 可选值:[ ] <b style="color:#808080;">(\-\-log=)</b> * 类型:字符串 * 默认值:无 * 描述:除了含有分支名以外,还将含有最多n个被合并commit节点的日志 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1. 将远程分支内容合并到当前分支</span> ``` 控制台输入命令:git merge origin/serverfix ``` <span style="color:red">2. 合并dev分支到当前分支</span> ``` git merge dev ``` <br/> # <span style="color:#619BE4">git rebase</span> ***** 融合分支不会产生新节点,merge会产生新节点 <br/> ### 参数说明 <b style="color:#808080;">-i</b> * 类型:字符串 * 默认值:无 * 描述:让用户编辑要重设基础的提交列表 * 可选值:[ ] <b style="color:#808080;">(\-\-continue)</b> * 类型:字符串 * 默认值:无 * 描述:发生冲突(conflict)解决后继续执行 * 可选值:[ ] <b style="color:#808080;">(\-\-abort)</b> * 类型:字符串 * 默认值:无 * 描述:发生冲突终止执行 * 可选值:[ ] <b style="color:#808080;">(\-\-onto)</b> * 类型:字符串 * 默认值:无 * 描述:rebase onto given branch instead of upstream * 可选值:[ ] <b style="color:#808080;">(\-\-autosquash)</b> * 类型:字符串 * 默认值:无 * 描述:自动将commit fixup提交的记录融合 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1. 融合前三条提交</span> ``` git rebase -i git rebase -i HEAD~3 ``` <br/> # <span style="color:#619BE4">git reset</span> ***** 撤销操作,撤销之后的节点会消失 <br/> ### 参数说明 <b style="color:#808080;">(\--soft)</b> * 类型:字符串 * 默认值:无 * 描述:仅仅只是撤销已提交的版本库,不会修改暂存区和工作区 * 可选值:[ HEAD{代表当前版本} ] <b style="color:#808080;">(\--mixed)</b> * 类型:字符串 * 默认值:无 * 描述:仅仅只是撤销已提交的版本库和暂存区,不会修改工作区 * 可选值:[ HEAD{代表当前版本} ] <b style="color:#808080;">(\--hard)</b> * 类型:字符串 * 默认值:无 * 描述:仅仅只是撤销已提交的版本库和暂存区,不会修改工作区 * 可选值:[ HEAD{代表当前版本} ] <b style="color:#808080;">path</b> * 类型:字符串 * 默认值:无 * 描述:指定具体文件或文件夹 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1.版本回退</span> ``` # 查看当前所在版本,并恢复未提交内容 # 服务器端必须运行命令:[ git reset --hard ]才能看到push后的显示内容。 git reset --hard HEAD # 回退到某个版本上面 git reset --hard 版本号 ``` <span style="color:red">2. 回退到指定tag</span> ``` # 查看所有tag,并找到要回退的版本号 控制台输入命令:git tag # 获取版本号,使用git reset --hard 版本号回退 控制台输入命令:git show [tag号] ``` <span style="color:red">3. 回退到上一个版本</span> ``` windows换行符是^,注意用双引号把HEAD^括起来,Linux下可以不用 控制台输入命令:git reset HEAD^ # 回退到上一个版本 ``` <span style="color:red">4. 拉取版本库的文件到暂存区该操作不影响工作区</span> ``` 控制台输入命令:git reset HEAD <file>点代表所有 ``` <span style="color:red">5. 撤销操作</span> ``` # 清除未提交的工作区文件 git clean -d -f # ======================================== # 恢复工作区 git restore . or git checkout . # ======================================== # 撤销暂存区 git restore --staged . or git reset . # 撤销暂存区->恢复工作区 git checkout HEAD . # ======================================== # 撤销本地仓库 git reset --soft HEAD~1 # 撤销本地仓库->撤销暂存区 git reset HEAD~1 or git reset --mixed HEAD~1 # 撤销本地仓库->撤销暂存区->恢复工作区 git reset --hard HEAD~1 or git revert HEAD ``` <iframe src="//player.bilibili.com/player.html?aid=559048463&bvid=BV1ne4y1S7S9&cid=861329934&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" style="width:100%;max-width:1100px;aspect-ratio: 1100/620;margin-top:20px;margin-bottom:20px;"></iframe> <br/> # <span style="color:#619BE4">git revert</span> ***** 撤销操作,文件恢复到某个时间节点,并且在[ 最新节点后 ]产生新节点工作 <br/> ### 参数说明 <b style="color:#808080;">-n</b> * 类型:字符串 * 默认值:无 * 描述:不自动提交 * 可选值:[ ] <br/> # <span style="color:#619BE4">git restore</span> ***** 恢复一切modified的状态 <br/> ### 参数说明 <b style="color:#808080;">(\--staged)</b> * 类型:字符串 * 默认值:无 * 描述:表示撤销暂存区的修改,将文件状态恢复到未 add 之前 * 可选值:[ ] <b style="color:#808080;">(\--worktree)</b> * 类型:字符串 * 默认值:无 * 描述:撤销工作区的修改 * 可选值:[ ] <b style="color:#808080;">(\-s)</b> * 类型:字符串 * 默认值:无 * 描述:切换到指定版本 * 可选值:[ HEAD~1(上个版本) ] <br/> # <span style="color:#619BE4">git tag</span> ***** 管理远程release版本 <br/> ### 参数说明 <b style="color:#808080;">\-l :</b> * 类型:字符串 * 默认值:无 * 描述:匹配特定标签 * 可选值:[ ] <b style="color:#808080;">\-d :</b> * 类型:字符串 * 默认值:无 * 描述:删除本地tag * 可选值:[ ] <b style="color:#808080;">\-a :</b> * 类型:字符串 * 默认值:无 * 描述:添加tag * 可选值:[ ] <b style="color:#808080;">\-m :</b> * 类型:字符串 * 默认值:无 * 描述:对于tag的描述 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1. 举例说明</span> ``` 创建本地tag git tag -a v3.0.0 -m "描述" ``` <span style="color:red">2. 给指定版本打标签</span> ``` git tag -a v1.2 9fceb02 -m "my tag" ``` <br/> # <span style="color:#619BE4">git fetch</span> ***** 更新 remote 索引 <br/> ### 参数说明 <b style="color:#808080;">str:</b> * 类型:字符串 * 默认值:无 * 描述:指定远程主机 * 可选值:[ ] <b style="color:#808080;">(\-\-unshallow):</b> * 类型:字符串 * 默认值:无 * 描述:获取所有内容,不浅层获取 * 可选值:[ ] <b style="color:#808080;">(\-\-prune):</b> * 类型:字符串 * 默认值:无 * 描述:在获取之前,删除远程上不再存在的任何远程跟踪引用 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1.获取索引概念图</span> ![git获取索引](https://img.kancloud.cn/5a/4f/5a4f26c04ec857ff4f6260591ba71251_500x419.png) <br/> # <span style="color:#619BE4">git pull</span> ***** 拉取远程仓库版本到本地 <br/> ### 参数说明 <b style="color:#808080;">(\-\-rebase)</b> * 类型:字符串 * 默认值:无 * 描述:采用rebase而不是merge方法拉取 * 可选值:[ ] <b style="color:#808080;">(\--allow-unrelated-histories)</b> * 类型:字符串 * 默认值:无 * 描述:允许无关的历史记录 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1. 拉取远程分支到本地</span> ``` 控制台输入命令:git pull origin master ``` <br/> # <span style="color:#619BE4">git push</span> ***** 推送到远程仓库 <br/> ### 参数说明 <b style="color:#808080;">\-u\(--set-upstream)</b> * 类型:字符串 * 默认值:无 * 描述:如果当前分支与多个主机存在追踪关系,那么这个时候\-u选项会指定一个默认主机 * 可选值:[ ] <b style="color:#808080;">\-f\(--force)</b> * 类型:字符串 * 默认值:无 * 描述:强制回退远程仓库到当前版本,之前所有版本消失 * 可选值:[ ] <b style="color:#808080;">(--force-with-lease)</b> * 类型:字符串 * 默认值:无 * 描述:更安全地进行强制推送 * 可选值:[ ] <b style="color:#808080;">\(--follow-tags)</b> * 类型:字符串 * 默认值:无 * 描述:带着标签一起同步 * 可选值:[ ] <b style="color:#808080;">\(--delete)</b> * 类型:字符串 * 默认值:无 * 描述:删除远程分支 * 可选值:[ ] <b style="color:#808080;">\-q\(--quiet)</b> * 类型:字符串 * 默认值:无 * 描述:不进行任何输出 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1. 指定默认推送的主机</span> ``` 控制台输入命令:git push -u origin master git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:${P_BRANCH} token推送,输入密码时候密码输入token值 ``` <span style="color:red">2. 向远程主机推送本地指定分支到远程指定分支</span> ``` 控制台输入命令:git push 远程主机 本地分支:远程分支 ``` <span style="color:red">3. 删除远程分支</span> ``` 控制台输入命令:git push origin :serverfix 注意空格,想当于把空传给了远程分支 或者 git push origin --delete Chapater6 ``` <span style="color:red">4. 删除远程tag</span> ``` 控制台输入命令:git push origin --delete tag v1.1 或者 git push origin :refs/tags/<tagName> ``` <span style="color:red">5. 上传tag</span> ``` 控制台输入命令:git push origin v3.0.0 ``` <span style="color:red">6. 推送所有tag</span> ``` 控制台输入命令:git push origin --tags ``` <span style="color:red">7. 清空远程分支所有提交记录</span> ``` git branch --orphan null git branch -d old git branch -m old git push -f origin old ``` <br/> # <span style="color:#619BE4">git remote</span> ***** 远程仓库操作 <br/> ### 参数说明 <b style="color:#808080;">\-v</b> * 类型:字符串 * 默认值:无 * 描述:显示简洁版日志,可选 * 可选值:[ ] <br/> ### 示例内容 <span style="color:red">1.关联远程仓库</span> ``` 控制台输入命令:git remote add origin https://github.com/SystemLight/Test.git ``` <span style="color:red">2.删除远程仓库关联</span> ``` 控制台输入命令:git remote rm origin ``` <span style="color:red">3.列出详细信息</span> ``` 控制台输入命令:git remote -v 可以查看具体http地址 ``` <span style="color:red">4.列出已经存在的远程分支</span> ``` 控制台输入命令:git remote ``` <span style="color:red">5. 更新远程分支列表</span> ``` 控制台输入命令:git remote update origin --prune ``` <span style="color:red">6. 修改远程仓库关联地址</span> ``` 控制台输入命令:git remote set-url origin [url] 或者 git remote rm origin git remote add origin [url] # 增加一条origin上游地址 git remote set-url --add origin https://gitee.com/Bwar/Nebula.git ``` <span style="color:red">7. 指定上游地址并拉取内容</span> ``` // upstream为自定义名称一般叫origin git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git git fetch upstream ``` <br/> # <span style="color:#619BE4">git gc</span> ***** 彻底删除不必要内容文件 <br/>