主题
git 常用命令
1 配置用户签名
sh
# 配置用户名
git config [--global] user.name <用户名>
# 配置邮箱,邮箱不一定是真实邮箱,仅用于标识身份
git config [--global] user.email <邮箱>
# 查看git的所有设置
git config --list
配置好后可通过cat ~/.gitconfig
指令查看。
2 创建版本库
sh
git init # 初始化本地仓库,生成.git文件夹
git clone <远程仓库地址> # 克隆仓库
git clone <远程仓库的网址> <本地目录> # 指定本地仓库的目录
# -b 指定要克隆的分支,默认是master分支
git clone <远程仓库的网址> -b <分支名称> <本地目录>
git clone --mirror $URL # 通过git仓库或者本地仓库创建镜像仓库
3 修改和提交
sh
git status # 查看本地仓库状态
git add <path> # 添加指定的文件到暂存区中
# 添加所有已修改、已删除的文件到暂存区中,不包括新增的文件
# 省略<path>表示 . ,即当前目录
git add -u [<path>]
# 添加所有文件到暂存区中,包括新增、已修改、已删除的文件
# 省略<path>表示 . ,即当前目录
git add --all [<path>]
git add -A [<path>]
git add . # 相当于 git add -A
git add -i [<path>] # 查看所有已修改或已删除但没有提交的文件,不包括新增的文件
git commit # 把暂存区中的文件提交到本地仓库,调用vim文本编辑器输入该次提交的描述信息(可换行)
git commit -m "<提交的描述信息>" # 把暂存区中的文件提交到本地仓库中并添加描述信息
git commit --amend # 将暂存区的内容合并到上一次提交,并可以修改message
git rebase -i commit_id # 以commit_id为基准执行交互式变基
更多修改历史commit记录: 《使用 git rebase 修改历史 commit 里的文件》
4 查看提交记录
sh
git log # 查看提交历史
git log --oneline # 单行显示提交记录
git log -p <file> # 查看指定文件的提交历史
git blame <file> # 以列表方式查看指定文件的提交历史
git reflog # 打印所有的提交记录(所有版本记录,包括回溯了的版本),精简版
当log太多时,按回车键换页显示 正确的退出log显示界面: q-->回车
5 撤销
sh
git reset --hard HEAD # 撒消工作目录中所有未提交文件的修改内容(撤销没有add的内容)
git reset --hard HEAD^^^ # 回溯到上一个版本【有几个^符号就会回溯几次版本】
git reset --hard <版本号(commit ID)前七位> # 回溯到指定版本号的版本
git checkout . # 撒消工作目录中所有未提交文件的修改内容(撤销没有add的内容)
git checkout HEAD <file> # 撤消指定的未提交文件的修改内容
git revert <commit> # 撤消指定的提交
6 分支与标签
sh
git branch # 列出本地的所有分支,当前所在分支以 "*" 标出
git branch -a # 查看当前的版本库中有哪些分支
git branch <分支名> # 创建新分支,新的分支基于上一次提交建立
git branch -m [<原分支名称>] <新的分支名称> # 修改分支名称,如果不指定原分支名称则为当前所在分支
git branch -M [<原分支名称>] <新的分支名称> # 强制修改分支名称
git branch -d <分支名称> # 删除指定的本地分支
git branch -D <分支名称> # 强制删除指定的本地分支
git checkout <分支名称> # 切换到已存在的指定分支
git switch <分支名称> # 切换到已存在的指定分支
# 创建并切换到指定的分支,保留所有的提交记录
# 等同于 "git branch" 和 "git checkout" 两个命令合并
git checkout -b <分支名称>
# 创建并切换到指定的分支,删除所有的提交记录
git checkout --orphan <分支名称>
git tag # 列出所有本地标签
git tag <tagname> # 基于最新提交创建标签
git tag -d <tagname> # 删除标签
7 合并
sh
git merge <branch> # 合并branch到当前分支
git rebase <branch> # 变基branch到当前分支
8. 远程操作
sh
git remote -v # 查看远程仓库信息
git remote show <remote> # 查看指定远程仓库信息
git remote add <remote> <远程ssh地址> # 添加本地仓库的远程地址
git remote remove origin # 移除远端源origin
git fetch <remote> # 从远程仓库更新本地仓库
git pull <remote> <branch> # 拉取远程代码及快速合并
git push <remote> <branch> # 推送本地代码到远程及快速合并
git push <remote> --delete <branch/tag-name> # 删除远程分支或标签
git push --tags # 上传所有标签
git push -f # 强推分支
git branch --set-upstream-to=origin/branch branch # 将本地分支与远程分支关联
9. diff
sh
git diff <commit_id> # 查看commit_id的修改
git diff <commit_id1> <commit_id2> # 查看两次提交之间的差异
git diff --cached/--staged # 查看暂存区和仓库之间的差异
git diff <branch1> <branch2> # 查看两分支之间的差异
10. 回滚远端分支代码
- 分支操作
sh
# 查看本地分支
git branch
# 查看远程分支
git branch -a
# 同步远端分支
git fetch
# 切换dev分支
git checkout dev # 或者 # git checkout -b dev origin/dev
- 使用
git log
命令查看提交记录(如下图)。黄色部分是提交记录id,找到需要回滚的提交记录id
- 执行
git reset --hard 3b483490bfd5cbc6499a133ce31f063bfc60be54
命令进行回滚。 - 执行git push -f命令同步至远程分支。
注意: 在git中,
git push -f
的意思是“强制更新”,是git push -force
的缩写,该命令的作用是将自己本地仓库的代码直接推送至仓库,完全以该命令提交为准,==之前提交都会被覆盖==。
11. 暂存本地提交
stash暂存后信息格式 stash@{index}: WIP on [分支名]: [最近一次的commitID] [最近一次的提交信息]
sh
# 暂存
git stash
# 或者
git stash save <"stashMessage"> # 可以添加备注信息,尖括号内的是备注信息
# 查看暂存历史
git stash list
# 恢复暂存
方式一(主要用于恢复指定stash)
# 取出指定index的储藏的恢复到工作区中,不会删除stash记录
git stash apply stash@{index}
# 将指定index的储藏从储藏记录列表中删除
git stash drop stash@{index}
方式二(推荐)
# 可取出最近一次储藏的修改到工作区中,并同时将该储藏从储藏记录列表中删除
git stash pop
git stash list后,效果如下: