生成Git密匙
ls ~/.ssh # 查看是否有rsa文件
ssh-keygen -t rsa -C "email@qq.com" # 生成ssh key文件
cat ~/.ssh/id_rsa.pub # 查看公钥
commit提交规范
- feat : 新功能【技艺、功绩】
- fix : 修复bug
- perf : 优化相关,比如提升性能、体验
- docs : 仅仅修改了文档,比如README...
- style : 代码格式改变,修改了空格、缩进格式、逗号等,不改变代码逻辑
- refactor : 某个已有功能重构或目录重构,没有增加新功能
- test : 增加测试,包括单元测试、集成测试等
- build : 改变了build工具 例如glup,webpack,rollup的配置等
- revert : 撤销上一次的 commit
- chore : 构建过程或辅助工具的变动,比如增加依赖库、工具等【日常事务】
- merge:代码合并
- sync:同步主线或分支的Bug
常用命令
git config
git config --global user.name "Mona Lisa" # 设置 Git 用户名
git config --global user.email "Mona Lisa" # 设置 Git 邮箱
git config --global user.name # 获取 Git 用户名
git config --global user.email # 获取 Git 用户名
git clone
git clone -b dev Git地址 # 拉取指定分支的代码
git remote
git remote // 查看已经配置的远程仓库服务器
git remote add origin Git地址 // 把本地仓库关联到gitHub上的仓库
git remote rename origin upstream // 远程仓库重命名, 远程仓库服务器的默认名称为 origin
git remote -v // 显示需要读写远程仓库使用的Git保存的简写与其对应的URL
git remote remove origin // 解除远程关联
git log
git log # 显示从最近到最远的提交版本信息
git reflog # 显示从最近到最远的提交版本信息(包括被删除的commit记录)
git log --graph # 可以看到分支合并图
git log --author='BurCha' # 显示某一个作者所有的提交(通过git log查看作者名)
git diff
git diff # 比较工作区和暂存区之间的区别 使用 q 退出
git diff HEAD # 比较工作区和最新本地仓库之间的区别
git diff HEAD^ # 比较工作区和最新远程仓库之间的区别
git diff --cached # 比较暂存区和最新本地仓库之间的区别
git diff branch2 # 查看当前分支和branch2分支的差别
git diff -- views/monitorScreen/monitor/index.vue # 后面加路径表示查看指定文件的区别
git reset
# --soft --hard 都不会撤销github平台提交
# 回退到上一个提交版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
git reset --soft HEAD^ # 会保留工作区的内容,撤销最近commit/push回退到暂存区
git reset --hard HEAD^ # 清空工作区和暂存区的改动,撤销最近commit/push
git reset --hard 1094a # 回退到指定提交版本(1094a...是commit id,版本号没必要写全,前几位就可以了)
git restore
git restore --staged . # 把暂存区全部文件的修改撤销掉(unstage),重新放回工作区
git restore --staged readme.txt # 把暂存区指定文件的修改撤销掉(unstage),重新放回工作区
git restore . # 丢弃工作区的全部修改
git restore readme.txt # 丢弃工作区指定文件的修改,这里有两种情况:一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到到暂存区后的状态。总之,就是让这个文件回到最近一次git commit或git add时的状态。注意:从来没有被Untracked(新建文件没有git add)就被修改或删除的文件,是无法撤销或恢复的!
git branch
git branch dev # 创建分支
git branch # 查看本地分支
git branch -r # 查看远程分支
git branch -m oldName newName # 修改本地分支名称
git branch -d Ddev # 删除分支
git branch --set-upstream-to=origin/remote_branch your_branch # 手动建立追踪关系,origin/remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支。
git branch -vv # 查看本地分支追踪的远程分支
git checkout
git checkout dev # 切换分支
git checkout -b dev # 切换并创建分支
git checkout -b dev origin/dev # 切换并创建分支并关联远程分支
git add commit status
git add . # 把工作区中所有最新修改的文件都提交到暂存区
git commit -m "描述信息" # 提交到本地仓库
git status # 查看当前文件的状态(红色代表在工作区,绿色代表在暂存区,看不见东西(nothing to commit)证明所有修改的信息都已经提交到本地仓库)
git stash
git stash # 能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。
git stash save "save message" # 可以添加备注
git stash list # 查看当前stash中有哪些存储
git stash pop # 将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
git stash apply # 应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},比如第二个:stash@{1}
git stash drop stash@{$num} # 丢弃存储,从列表中删除这个存储
git fetch merge
# 取回指定分支的更新,从远程的origin仓库的dev分支下载代码到本地的origin/dev 【仅仅是改变FETCH_HEAD指向,并不会创建实体分支】
git fetch <远程主机名> <远程分支名>
git fetch origin dev
# 所取回的更新,在本地主机上要用"远程主机名/分支名"的形式读取。比如origin主机的dev分支,就要用origin/dev读取。
git merge origin/dev
# 从远程的origin仓库的master-2020.06.23分支下载到本地并新建一个分支master-2020.06.23(不会自动切换分支)【会创建实体分支】
git fetch <远程主机名> <远程分支名>:<本地分支名>
git fetch origin master-2020.06.23:master-2020.06.23
git merge master-2020.06.23
git merge
git merge dev # 用于合并指定分支(dev)到当前分
git pull
git pull --rebase upstream master # 默认merge到当前分支,从远程仓库中获去某个分支的更新,在于本地指定的分支进行merge。此命令本来是:git pull --rebase 【远程主机名】 【远程分支名】:【本地分支名】的省略写法
git push
# 此命令本来是:git push 【远程主机名】 【本地分支名】:【远程分支名】的省略写法
# 【前提:本地必须要有libc分支,否则推送失败,远程自动创建分支失败】
# 无论本地分支有没有关联远程分支,远程都会自动创建一个libc分支,如使用git push -u,则会建立追踪关系
git push upstream libc
git push -u upstream libc # 建立与远程libc分支的追踪关系,以后就可以git push / git pull 不指定参数 直接推送或者拉取