设置username和email
git config --global user.name "wenbo"
git config --global user.email "1050794513@qq.com"
通过终端命令创建ssh key
cd ~/.ssh
查看是否有ssh
ssh-keygen -t rsa -C "邮箱地址"
执行成功后,会在主目录.ssh路径下生成两个文件:id_rsa私钥文件;id_rsa.pub公钥文件;
cat id_rsa.pub
查看id_rsa.pub文件的内容,配置到git上面的ssh-key上面;
git基本操作
$ git clone
克隆
$ git pull
拉取
$ git add
添加到本地仓库
$ git commit -m '提交说明'
提交到本地仓
$ git checkout -b <branch name>
创建分之
$ git push --set-upstream origin <branch name>
首次push代码,设置当前本地分支的默认远程分支。
$ git push
提交到远程仓库
$ git branch -a
查看所有的远程分支和本地分支
$ git diff master
如果当前分支是dev,可以查看dev分支和master分支的代码差异
多人合作代码提交
目的:避免提交记录中出现”Merge branch of…”,保持代码提交记录整洁。
先commit本地的代码,然后按照下面的步骤执行:
$ git stash
缓存本地代码
$ git pull --rebase
拉取代码,如果代码冲突,解决冲突
$ git stash pop
把缓存代码取出来,如果代码冲突,解决冲突
最后commit,push代码
从远程仓库获取最新代码合并到本地分支
1. git pull方式
$ git pull origin master
拉取远端origin/master分支并合并到当前分支
$ git pull origin dev
拉取远端origin/dev分支并合并到当前分支
$ git fetch origin dev
把远程分支拉到本地
2. git fetch + merge
2.1.额外建立本地分支
$ git fetch origin master:dev
在本地建立dev分支,并下载远端的origin/master分支到dev分支中
2.2.不额外建立本地分支
$ git fetch origin master
获取远端的origin/master分支
$ git log -p master origin/master
查看本地master与远端origin/master的版本差异
$ git merge origin/master
合并远端分支origin/master到当前分支
git切换分支
$ git branch dev
创建分支
$ git checkout dev
切换分支
$ git branch
查看本地分支
git修改分支名称
$ git branch -m oldName newName
分支重命名
$ git push --delete origin oldName
删除远程分支
$ git push origin newName
上传新命名的本地分支
版本回退
$ git reflog
查看提交日志
$ git reset --hard a7e1d279
回退到指定的版本,a7e1d279是commit id
$ git push -f origin master
强制推送到远程的分支(如果你的错误提交已经推送到自己的远程分支了)
版本反做
适用场景: 如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。
$ git reflog
查看提交日志
$ git revert -n a7e1d279
需要反做的版本,a7e1d279是commit id
注意: 这里可能会出现冲突,那么需要手动修改冲突的文件。而且要git add 文件名。
$ git commit -m "revert add 文件名"
重新提交冲突的文件
$ git push
把最新的提交推送到远程
注意: git reset —hard 撤销到某次提交 git revert -n 撤销某次提交
git rebase feat/0.1.0
git提交规范
type
- feat: 新增功能。
- fix: 修复 bug。
- docs: 文档相关的改动。
- style: 对代码的格式化改动,代码逻辑并未产生任何变化。
- test: 新增或修改测试用例。
- refactor: 重构代码或其他优化举措。
- chore: 项目工程方面的改动,代码逻辑并未产生任何变化。
npm提交规范:
patch:小变动,比如修复bug等,版本号变动 v1.0.0->v1.0.1
minor:增加新功能,不影响现有功能,版本号变动 v1.0.0->v1.1.0
major:破坏模块对向后的兼容性,版本号变动 v1.0.0->v2.0.0