git语法基本语法 git语法目录命令图解全局配置基本工作流程创建版本库工作区相关操作暂存区相关操作工作区和暂存区相关操作本地仓库相关操作远程仓库相关操作仓库关联推送拉取回滚相关操作分支管理查看分支创建/切换分支合并分支删除分支子模块子模块初始化添加子模块更新子模块移除子模块查看子模块状态常见问题游离态文件跟踪冲突解决重新上传到仓库命令图解pushfetch/clonepullcommitreset HEADaddcheckoutcheckout -- filecommit -am远程仓库本地仓库暂存区工作区全局配置gitconfig--list#查看已有配置gitconfig配置名#查看具体配置gitconfig[--global][--unset]user.namexxx#配置名字gitconfig[--global][--unset]user.emailxxxxxx.com#配置邮箱gitconfig[--global]credential.helper#禁用凭证缓存#credential.helper其他模式manager:使用命令后,凭据会被记录到系统的凭据管理里,位置:控制面板-用户账户-凭据管理-windows凭据 store:会将凭证用明文的形式存放在磁盘中并且永不过期 cache:会将凭证存放在内存中一段时间。 密码永远不会被存储在磁盘中并且在15分钟后从内存中清除 ssh-keygen-trsa-b4096-Cyour.emailexample.com#生成密钥#强制指定换行符为LFgitconfig[--global]core.autocrlffalsegitconfig[--global]core.eol lfgitconfig[--global]core.filemodefalse#文件名大小写敏感gitconfig--globalcore.ignorecasefalse# 设置VS Code为默认合并工具gitconfig--globalmerge.tool vscodegitconfig--globalmergetool.vscode.cmdcode --wait $MERGED[]里面为可选选项/表示该选项有多个模式–global为全局配置没有则为项目配置项目配置优先于全局配置–unset为取消该配置基本工作流程创建版本库gitcloneurl#克隆远程版本库gitinit#初始化本地版本库工作区相关操作gitrestore文件名# 撤销修改至最近一次提交会丢弃所有修改gitadd文件名# 添加文件到暂存区gitrestore--stagedfile# 撤销add到暂存区的文件不会更改文件内容暂存区相关操作gitstatus#查看仓库状态gitdiff# 比较暂存区与工作区gitdiff--cached# 比较暂存区与本地仓库gitcommit-m提交说明#提交暂存区内容到本地仓库gitcommit--amend--no-edit#合并上一次提交工作区和暂存区相关操作gitstash# 保存工作区和暂存区的内容到git栈gitstash save注释#同上可以增加注释gitstash pop# 弹出最新保存到git栈的代码gitstashclear# 清除git栈保存的内容本地仓库相关操作gitlog#查看历史提交gitreset--hardcommitID# 回退到指定提交远程仓库相关操作仓库关联gitremote-v#查看远程版本库gitremoteaddorigin仓库URL#关联远程版本库gitremotermorigin#取消关联远程版本库推送gitpush origin分支名#推送本地提交gitpush --force-with-lease#强制推送拉取gitpull origin分支名# fetch mergegitreset--hardorigin/master#强制拉取最新提交覆盖本地(谨慎使用)回滚相关操作#把整个git仓库文件回退到 commit 参数指定的版本当分支名与提交哈希相同时需要用到detach参数gitcheckout[--detach]commit#回退 filepath 文件为 commit 参数指定的版本gitcheckout[--detach][commit][--]filepath#把git的HEAD指针指向到 commit 对应的版本本地文件内容不会被回退gitresetcommit#把git的HEAD指针指向到 commit 对应的版本本地文件内容也会被回退gitreset--hardcommit分支管理查看分支gitbranch# 查看本地分支gitbranch-a# 查看所有分支含远程创建/切换分支gitbranch分支名# 创建分支gitcheckout分支名# 切换分支gitcheckout-b新分支名#创建并切换分支gitswitch分支名# 切换分支 (Git 2.23)合并分支gitmerge目标分支# 将目标分支合并到当前分支删除分支gitbranch-d分支名# 删除本地分支gitpush origin--delete分支名#删除远程分支子模块子模块初始化gitsubmodule init#在克隆了一个包含子模块的仓库后运行此命令来初始化子模块#示例gitclone仓库URLcd项目目录gitsubmodule init添加子模块gitsubmoduleadd仓库URL子模块路径#添加后需要添加默认分支[submodule路径]path路径urlhttps://github.com/user/libfoo.git branchmain# 需要添加默认分支更新子模块gitsubmodule update--init--recursive#在初始化子模块后运行改命令gitsubmodule update--remote--recursive#需要更新子模块的内容时运行此命令移除子模块gitsubmodule deinitpath#将子模块从 .git/config 文件中移除并删除子模块目录中的文件gitrmpath#将子模块的引用从主仓库中删除并提交更改#示例gitsubmodule deinit--all--force目录名gitrm目录名查看子模块状态gitsubmodule status常见问题游离态# 创建临时分支指向当前提交gitcheckout-btemp-branch# 切换到您想要合并到的分支gitcheckout master# 合并临时分支gitmerge temp-branch# 删除临时分支可选gitbranch-dtemp-branch# 推送更改gitpush origin master文件跟踪#停止跟踪且保留远程文件gitupdate-index --skip-worktree文件路径#恢复跟踪gitupdate-index --no-skip-worktree文件路径#如需使用文件夹使用一下命令gitls-files文件夹名/|xargsgitupdate-index --skip-worktree#从Git记录中移除gitrm--cached文件路径gitrm-r--cached目录路径冲突解决# 启动合并工具gitmergetool# 处理完一个文件后继续下一个gitmergetool--toolvscode#*需要配置工具具体查看全局配置重新上传到仓库# 删除本地 .git 目录rm-rf.git# 重新初始化 Git 仓库gitinit#添加所有文件并提交gitadd.gitcommit-mxxx#关联远程仓库gitremoteaddorigin你的远程仓库地址#强制推送到远程覆盖远端历史gitpush-uorigin master--force