GIT 命令清单
Git最小配置
配置当前账户下所有仓库 | 配置当前git仓库 |
git config --global user.name '你的git账户名称' | git config --local user.name '你的git账户名称' |
git config --global user.email '你的Email' | git config --local user.name '你的Email' |
查看Git的配置
查看当前账户下所有仓库的配置项 | 查看当前git仓库的配置项 |
git config --global --list | git config --local --list |
清除Git的配置
清除当前账户下所有仓库的配置项 | 清除当前git仓库的配置项 |
git config --unset --global 某个配置项 | git config --unset --local 某个配置项 |
本地基本操作(一)
命令 | 说明 |
git status | 查看变更情况 |
git branch -v | 查看当前工作在哪个分支上 |
git checkout 分支名称 | 切换到指定的分支上 |
git add . | 暂存当前目录及目录下的所有变更到暂存区 |
git add -A | 把仓库内所有变更都加入到暂存区 |
git add 文件1 文件2 文件3 | 把指定的文件暂存到暂存区 |
git commit | 创建正式的commit |
git diff 某个文件 | 比较某个文件工作区和暂存区的差异 |
git diff --cached 某文件 | 比较某文件暂存区和 HEAD 的差异 |
git diff HEAD 某文件 | 比较某文件工作区和 HEAD 的差异 |
git diff | 比较工作区和暂存区的所有差异 |
git diff --cached | 比较暂存区和 HEAD 的所有差异 |
git checkout 文件1 文件2 文件3 | 把工作区指定文件恢复成和暂存区一样 |
git reset 文件1 文件2 文件3 | 把暂存区指定文件恢复成和 HEAD 一样 |
git reset --hard | 把暂存区和工作区所有文件恢复成和 HEAD 一样 |
git difftool commitA commitB | 用difftool比较任意两个commit之间的差异 |
git is-files --others | 查看哪些文件没被 git 管控 |
加塞临时任务的处理
命令 | 说明 |
git stash | 把未处理完的变更先保存到 stash 中 |
git stash pop | 临时任务处理完后继续之前未完的工作 |
git stash list | 查看所有stash |
git stash pop stash@{数字n} | 取回某次 stash 的变更 |
修改个人分支的历史
修改最后一次commit
- 在工作区修改文件
- git add .
- git commit --amend
修改中间的commit(代号X)
- git rebase -i X前面一个commit的id
- 在工作区修改文件
- git add .
- git rebase --continue
后续可能需要处理冲突,直到rebase结束。
命令 | 说明 |
git log --oneline | 当前分支各个commit 用一行显示 |
git log -n | 显示就近的n个commit |
git log --oneline --graph --all | 用图示显示所有分支的历史 |
git log 某个文件 | 查看涉及到某文件变更的所有commit |
git blame 某个文件 | 某文件各行最后修改对应的 commit 以及其作者 |
分支与标签
命令 | 说明 |
git branch 新分支 | 基于当前分支创建新分支 |
git branch 新分支 已有分支 | 基于指定分支创建新分支 |
git checkout -b 新分支 某个commit的ID | 基于某个 commit 创建分支 |
git checkout -b 新分支 | 创建新的分支并切换到该分支 |
git branch -v | 列出本地分支 |
git branch -av | 列出本地和远端分支 |
git branch -rv | 列出远端所有分支 |
git branch -rv -l'某样式' | 列出名称符合某样式的远程分支 |
git branch -d 拟删除分支 | 安全删除本地分支 |
git branch -D 拟删除分支 | 强行删除本地某分支 |
git branch --merged master | grep -v '^\*\| master' | xargs -n 1 git branch -d | 删除已合并到 master 分支的所有本地分支 |
git remote prune origin | 删除远端 origin 已不存在的所有本地分支 |
git tag 标签名 commitid的ID | 给commit打上标签 |
两分支之间的集成
命令 | 说明 |
git merge A分支 | 把A分支合入到当前分支,且为 merge创建 commit |
git merge A分支 B分支 | 把A分支合入到B分支,且为 merge 创建commit |
git rebase B分支 | 把当前分支基于B分支做rebase,以便把B分支合入到当前分支 |
git rebase B分支 A分支 | 把A分支基于B分支做rebase, 以便把B分支合入到A分支 |
git mergetool | 用mergetool解决冲突 |
和远端的交互
命令 | 说明 |
git remote -v | 列出所有的remote |
git remote add url地址 | 增加remote |
git remote remove remote的名称 | 删除remote |
git remote rename 旧名称 新名称 | 改变remote的name |
git fetch remote | 把远端所有分支合标签的变更都拉到本地 |
git pull remote名称 分支名 | 把远端分支的变更拉到本地,且 merge到本地分支 |
git push remote名称 分支名 | 把本地分支 push 到远程 |
git push remote --delete 远端分支名 | 删除远端分支 |
git push remote 标签名 | 向远端提交指定标签 |
git push remote --tags | 向远端提交所有标签 |
git删除中间某个commit
- git log获取commit信息
- git rebase -i (commit-id) commit-id 为要删除的commit的前一个commitId
- 编辑文件,将要删除的commit之前的单词改为drop
- 先按esc键退出 然后输入:wq进行保存
- git push -f 强推到远程
- 查看git log 检查是否有误