Git:版本管理工具
重要概念:工作区,暂存区,本地仓库,远程仓库
Win下安装:
- 下载msysgit,全默认,修改了安装路径
- 添加全局设置:
git config --global user.name ”denghao”
git config --global user.email “dengh20@chinaunicom.cn” - git config --list 查看config配置
- 打通gitHub:
创建ssh key:ssh-keygen -t rsa -b 4096 -C “your_email@example.com”(邮箱需要和注册邮箱一致)
cd ~,vim .ssh/id_rsa.pub 复制到 github的settings–>add ssh key中 - 测试和github连通性:ssh -T git@github.com(warn忽略)
- 打通gitLab:同上,只不过已经生成了ssh key,就可以直接在gitlab上add ssh key;
最佳实践
-
分支管理:
Master分支:主分支,只读分支,只接受merge操作,和生产保持同步;
develop分支:从mater分支checkout,一般不进行开发,只用来做分支整合;
Hotfix分支:热修复线上bug,直接从master,checkout出来;
Feature 分支:从develop分支checkout出来,开发分支;
Release分支:测试分支,从develop分支checkout,进行测试并且bug修复; -
创建项目:默认创建master分支,拉取develop分支;
-
功能开发:develop分支checkout出feature分支(每个开发checkout自己分支),开发完成后合并到develop分支,并推送到远程仓库develop分支;开发均完成以上操作后,从dev分支拉取release分支,联调提测,并在release分支上修改bug,测试完成,进行发布上线,完成后merge到master分支打tag,并且master分支merge回dev分支;
-
Bug修复:master分支checkout出hotfix分支,在分支上开发,测试,改bug,测试完成后,直接发布。发布完之后merge到master分支并打tag,master分支meger到dev分支;
-
在任何分支开发,测试过程中,如果有上线,都会打tag合并到master分支,然后均需要合并dev分支,合并到feature分支或realse分支,合并master分支到hotfix分支之上;
-
实战举例:
Github新建repository,默认master分支
本地执行:git clone … 创建本地版本库,并将master分支和origin/master关联;
Github新建dev分支
本地执行:git checkout -b dev(本地分支名) origin/develop(远程分支名) : 从远程分支拉取并创建本地分支dev,并切换到dev分支
本地dev拉取feature分支进行开发,开发完成后merge到dev分支
更新本地dev分支:git fetch origin dev:tmp + git diff tmp + git merge tmp,或者git pull
本地dev分支推送到远程develop分支:git push 或者 git push origin dev:develop
从远程dev分支创建release分支,提交测试,修改bug,完成,完成发布
从release分支merge回master分支,并打tag,master分支merge回dev分支;
Git 命令详解:
-
新建项目方法一:Github上建立一个repository,然后本地执行git clone git@github.com:winterComing/explore-spring-boot.git
这样在本地建立了一个版本库,并自动把本地的master分支和远程的master分支对应起来了,并且远程仓库的默认名称是origin。 -
新建项目方法二:本地单独初始化版本库git init ,然后关联远程仓库:git remote add origin git@github.com:winterComing/explore-spring-boot.git
-
创建.gitignore:在版本库的根目录创建.gitignore,写入不提交的文件名,通常和readme同级别目录,linux下查看隐藏目录 ls -a
-
远程仓库管理:
git remote -v 查看远程仓库
git remote add unicomOrigin http:xxx.xxx 增加远程仓库
git remote remove origin 删除远程仓库origin -
查看分支:
git branch 查看本地分支;
git branch -a 查看本地分支和远程分支;
git branch -vv 查看本地分支和远程分支的对应关系 -
本地分支操作:
git branch feature 从当前分支创建feature分支
git checkout dev 切换到dev分支
git checkout -b feature 从当前所在分支新建feature分支,并切换到feature分支,创建分支和切换分支合一起
git merge feature 将feature分支开发内容合并到当前所在分支
git branch -d feature 删除feature分支 -
远程分支操作:
git checkout -b dev(本地分支名) origin/develop(远程分支名):从远程origin的develop分支拉取到本地dev分支并切换到本地dev分支
git pull origin dev从远程origin/dev分支拉取到本地,并与当前分支合并,等价于fetch + merge,推荐用:git fetch origin dev:tmp(拉取 origin/dev分支到本地tmp分支) + git diff tmp(对比tmp分支和当前分支) + git merge tmp(将tmp分支合并到本地分支)来替代;
git push origin dev:develop将本地dev分支推送到远程origin/develop分支(通常本地分支已经和远程分支建立了对应关系,所以不必指定推送仓库和分支)
git remote update origin --prune 更新远程分支列表
git push origin --delete feature_x 删除远端分支feture_x
git branch --set-upstream-to origin/develop dev 让本地分支dev跟踪远程分支origin/develop -
提交代码
git status
git add readme.txt(git add . 标识当前目录所有文件)
git commit -m ‘modify readme’
git log {branchName} 列出当前分支(指定分支)的提交记录 -
回滚提交
git checkout – fileName 用暂存区文件恢复(适用于文件的修改未提交到暂存区,想要恢复之前版本)
git reset HEAD fileName 用版本库文件恢复(适用于文件的修改已经提交到暂存区,想要恢复之前的版本)
git log
git reset 版本号 fileName(HEAD表示当前版本,HEAD^表示前一个版本)查看工作区与本地仓库的提交记录,并回退到指定版本 -
标签管理:
git tag 列出已有的标签
git tag -a v1.0 -m ‘’ 给当前分支加上v1.0标识和注释
git tag -d v1.0 删除v1.0的标签
git push origin v1.0 将本地v1.0标签推送到远程
注意:Tag和分支无关联; -
参考:http://rogerdudler.github.io/git-guide/index.zh.html
来源:CSDN
作者:qq_28128035
链接:https://blog.csdn.net/qq_28128035/article/details/103746036