## Git 常用命令
### 仓库
~~~
# 在当前目录新建一个Git代码库
$ git init
# 新建一个目录,将其初始化为Git代码库
$ git init [project-name]
# 下载一个项目和它的整个代码历史
$ git clone [url]
~~~
### 配置
~~~
# 显示当前的Git配置
$ git config --list
# 编辑Git配置文件
$ git config -e [--global]
# 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"
~~~
### 增加/删除文件
~~~
# 添加指定文件到暂存区
$ git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
$ git add [dir]
# 添加当前目录的所有文件到暂存区
$ git add .
# 添加每个变化前,都会要求确认
# 对于同一个文件的多处变化,可以实现分次提交
$ git add -p
# 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...
# 停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file]
# 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]
~~~
### 代码提交
~~~
# 提交暂存区到仓库区
$ git commit -m [message]
# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]
# 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a
# 提交时显示所有diff信息
$ git commit -v
# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]
# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...
~~~
### 分支
~~~
# 列出所有本地分支
$ git branch
# 列出所有远程分支
$ git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
# 新建一个分支,并切换到该分支
$ git checkout -b [branch]
# 新建一个分支,指向指定commit
$ git branch [branch] [commit]
# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]
# 切换到指定分支,并更新工作区
$ git checkout [branch-name]
# 切换到上一个分支
$ git checkout -
# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
~~~
### 标签
~~~
# 列出所有tag
$ git tag
# 新建一个tag在当前commit
$ git tag [tag]
# 新建一个tag在指定commit
$ git tag [tag] [commit]
# 删除本地tag
$ git tag -d [tag]
# 删除远程tag
$ git push origin :refs/tags/[tagName]
# 查看tag信息
$ git show [tag]
# 提交指定tag
$ git push [remote] [tag]
# 提交所有tag
$ git push [remote] --tags
# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]
~~~
### 查看信息
~~~
# 显示有变更的文件
$ git status
# 显示当前分支的版本历史
$ git log
# 显示commit历史,以及每次commit发生变更的文件
$ git log --stat
# 搜索提交历史,根据关键词
$ git log -S [keyword]
# 显示某个commit之后的所有变动,每个commit占据一行
$ git log [tag] HEAD --pretty=format:%s
# 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件
$ git log [tag] HEAD --grep feature
# 显示某个文件的版本历史,包括文件改名
$ git log --follow [file]
$ git whatchanged [file]
# 显示指定文件相关的每一次diff
$ git log -p [file]
# 显示过去5次提交
$ git log -5 --pretty --oneline
# 显示所有提交过的用户,按提交次数排序
$ git shortlog -sn
# 显示指定文件是什么人在什么时间修改过
$ git blame [file]
# 显示暂存区和工作区的差异
$ git diff
# 显示暂存区和上一个commit的差异
$ git diff --cached [file]
# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD
# 显示两次提交之间的差异
$ git diff [first-branch]...[second-branch]
# 显示今天你写了多少行代码
$ git diff --shortstat "@{0 day ago}"
# 显示某次提交的元数据和内容变化
$ git show [commit]
# 显示某次提交发生变化的文件
$ git show --name-only [commit]
# 显示某次提交时,某个文件的内容
$ git show [commit]:[filename]
# 显示当前分支的最近几次提交
$ git reflog
~~~
### 远程同步
~~~
# 下载远程仓库的所有变动
$ git fetch [remote]
# 显示所有远程仓库
$ git remote -v
# 显示某个远程仓库的信息
$ git remote show [remote]
# 增加一个新的远程仓库,并命名
$ git remote add [shortname] [url]
# 给当前本地仓库默认[origin],再增加一个远程库
$ git remote set-url --add origin [url]
# 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]
# 上传本地指定分支到远程仓库
$ git push [remote] [branch]
# 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force
# 推送所有分支到远程仓库
$ git push [remote] --all
~~~
### 撤销
~~~
# 恢复暂存区的指定文件到工作区
$ git checkout [file]
# 恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit] [file]
# 恢复暂存区的所有文件到工作区
$ git checkout .
# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]
# 重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard
# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset [commit]
# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
$ git reset --hard [commit]
# 重置当前HEAD为指定commit,但保持暂存区和工作区不变
$ git reset --keep [commit]
# 新建一个commit,用来撤销指定commit
# 后者的所有变化都将被前者抵消,并且应用到当前分支
$ git revert [commit]
暂时将未提交的变化移除,稍后再移入
$ git stash
$ git stash pop
~~~
### 其他
~~~
# 生成一个可供发布的压缩包
$ git archive
~~~
以上常用命令来自阮一峰老师的博客文章《常用 Git 命令清单》,感谢阮老师!
- 文档说明
- 后台定制类
- WordPress后台样式
- WordPress创建后台小工具
- WordPress增加新的角色
- WordPress修改默认角色名
- WordPress后台顶部去除新建文章
- WordPress后门代码,仅参考思路,创建管理员
- 对订阅用户隐藏资料页面
- 修改WordPress后台侧边栏菜单名字
- 修改自定义文章菜单图标
- 基于用户角色权限区分不同的功能
- WordPress修改登录页面图标,名字等功能
- WordPress对于非管理员禁用密码修改栏
- WordPress禁用顶部工具栏
- WordPress后台强制使用某种语言
- WordPress自定义后台登录失败提示
- WordPress使用一栏后台
- WordPress后台自定义联系方式
- WordPress将一些页面跳转到后台
- 用户登陆后跳转到指定页面
- WordPress禁用后台欢迎工具
- WordPress后台代码文件必备验证
- WordPress自定义后台欢迎面板内容
- WordPress判断是否为指定post-type
- WordPress用户描述支持HTML代码
- WordPress自定义后台右下角文字
- WordPress禁用全部小工具
- 评论互动类
- 给评论提交按钮添加class
- WordPress禁用附件评论
- WordPress评论去除链接栏
- 告诉用户文章N天之后即将关闭评论
- 限制评论字数
- WordPress屏蔽指定外文垃圾评论
- WordPress替换评论者链接
- WordPress转换评论中的HTML实体
- 去除自定义里面不想要的控制器
- 从自定义里面去除自定义CSS
- WordPress增加子主题名字到body class里面
- 自定义WordPress的body_class
- 修改WordPress媒体库上传文件格式限制
- 导航类
- WordPress面包屑导航
- 在导航栏加入搜索框
- 在导航里面添加自定义项目
- 高亮导航
- 图片类定制
- 去除WordPress图片尺寸限制
- 固定WordPress插入图片设置
- 禁用WordPress的响应式图片
- WordPress增加全站图标
- WordPress后台媒体库替换缩略图链接
- WordPress自动将第一个图片设为特色图
- WordPress要求必须增加特色图才可以发布
- 第三方服务类
- WordPress禁用谷歌字体
- WordPress禁用emojis
- 百度主动推送代码
- WordPress前台禁用dashicon图标字体
- 邮箱服务类
- 关闭WordPress注册邮箱通知功能
- 修改用户前线邮箱通知
- 头像类
- WordPress禁用gavatar头像
- WordPress自定义默认头像
- WordPress替换头像服务器
- 安全防御类
- 禁用WordPress的xmlrpc功能
- WordPress维护模式代码
- WordPress数据库维护代码
- WordPress去除版本号
- 网站登录验证
- 禁用pingbak
- 条件判断类
- 判断评论用户是否为注册用户
- WordPress判断是否是管理员
- WordPress判断是否登录
- SEO优化类
- WordPress替换网站描述
- WordPress文章描述
- 将特色图设置到OG标签
- 自定义默认文章标题
- 页面支持摘要
- 在某些页面模板中禁用编辑器
- 移除某些页面模板
- 权限控制类
- 针对不同状态显示不同颜色
- 文章显示过期提示
- 从文章内容提取描述
- 短代码保护邮箱
- 在用户栏修改用户ID
- 未登录用户强制跳转登录页
- 分类描述支持HTML
- 移除已存在的分类
- 支持在小工具使用短代码
- 禁用主题插件编辑器
- 定义默认主题slug
- 禁用默认主题的安装
- 禁止主题和插件文件修改
- wp-config.php参数
- 修改数据前缀
- 清理无用自定义字段
- 在编辑器周围自定义内容
- 清理头部乱七八糟无用的代码
- 禁用图片的说明文字
- 禁用可视化编辑器
- WordPress各PHP页面用缓存做数据交换
- 网络资源类
- 网络二维码API
- bat批处理微信多开
- 获取IP地址接口
- 页面组件类
- 黑色网页页脚
- 黑色页脚二
- 微软卡片式通栏模块
- 增强内置的延迟加载性能
- WordPress 禁用 admin/login 跳转
- WordPress HOOKS执行顺序
- 服务器类
- LNMP管理命令行
- 宝塔命令行
- 数据库类
- WordPress数据库查询的安全处理
- 数据获取类
- 通过ID获取文章内容
- WordPress根据页面模板路径获取页面ID
- 获取文章第一个链接
- WordPress获取当前页面链接
- 获取顶层页面的ID
- WordPress优化类
- WordPress自定义路由
- WordPress隐藏部分插件
- 关闭WordPress核心,主题,插件更新
- WordPress禁用RSS订阅
- WordPress禁用静态资源版本查询
- WordPress去除后台logo
- WordPress内容仅限登录用户查看
- WordPress延迟RSS订阅
- WordPress屏蔽部分分类
- WordPress根据UA切换主题
- 自定义摘要字数
- 自定义更多内容文字
- 文章底部版权声明以及自定义内容
- 小工具支持PHP代码
- WordPress文本编辑器添加少量自定义按钮
- WordPress文章关键字替换
- WordPress首页排除某些分类文章
- WordPress添加隐藏的设置页面
- WordPress加载自定义jQuery库
- 限制WordPress版本号数目
- WordPress搜索结果包含自定义文章类型
- 禁止ping到自己的WordPress网站
- 在源代码页脚显示资源消耗
- WordPress禁用自带的小工具
- WordPress后台删除不必要的小工具
- WordPress指定用户投稿分类
- WordPress增加ajax点赞功能
- 自定义WordPress登录背景
- WordPress强制阻止代码转义功能
- WordPress页面伪静态化
- WordPress代码版sitemap地图
- WordPress非管理员不准进入后台
- WordPress注册之后跳转到指定页面
- WordPress增加通用短代码下拉按钮
- WordPress给不同状态的文字添加颜色
- 后台添加操作指引
- 短代码实现倒计时显示功能
- 让登录用户选择跳转到哪里
- WordPress定时任务
- PHP验证当前时间是否在指定时间段
- Git 命令大全
- 常用JS代码
- 常用js函数使用方式
- 实用js函数代码