版本管理工具Git

别来无恙 提交于 2020-01-12 12:05:18

Git:版本管理工具

重要概念:工作区,暂存区,本地仓库,远程仓库

Win下安装:

  1. 下载msysgit,全默认,修改了安装路径
  2. 添加全局设置:
    git config --global user.name ”denghao”
    git config --global user.email “dengh20@chinaunicom.cn”
  3. git config --list 查看config配置
  4. 打通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中
  5. 测试和github连通性:ssh -T git@github.com(warn忽略)
  6. 打通gitLab:同上,只不过已经生成了ssh key,就可以直接在gitlab上add ssh key;

最佳实践

  1. 分支管理:
    Master分支:主分支,只读分支,只接受merge操作,和生产保持同步;
    develop分支:从mater分支checkout,一般不进行开发,只用来做分支整合;
    Hotfix分支:热修复线上bug,直接从master,checkout出来;
    Feature 分支:从develop分支checkout出来,开发分支;
    Release分支:测试分支,从develop分支checkout,进行测试并且bug修复;

  2. 创建项目:默认创建master分支,拉取develop分支;

  3. 功能开发:develop分支checkout出feature分支(每个开发checkout自己分支),开发完成后合并到develop分支,并推送到远程仓库develop分支;开发均完成以上操作后,从dev分支拉取release分支,联调提测,并在release分支上修改bug,测试完成,进行发布上线,完成后merge到master分支打tag,并且master分支merge回dev分支;

  4. Bug修复:master分支checkout出hotfix分支,在分支上开发,测试,改bug,测试完成后,直接发布。发布完之后merge到master分支并打tag,master分支meger到dev分支;

  5. 在任何分支开发,测试过程中,如果有上线,都会打tag合并到master分支,然后均需要合并dev分支,合并到feature分支或realse分支,合并master分支到hotfix分支之上;

  6. 实战举例:
    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 命令详解:

  1. 新建项目方法一:Github上建立一个repository,然后本地执行git clone git@github.com:winterComing/explore-spring-boot.git
    这样在本地建立了一个版本库,并自动把本地的master分支和远程的master分支对应起来了,并且远程仓库的默认名称是origin。

  2. 新建项目方法二:本地单独初始化版本库git init ,然后关联远程仓库:git remote add origin git@github.com:winterComing/explore-spring-boot.git

  3. 创建.gitignore:在版本库的根目录创建.gitignore,写入不提交的文件名,通常和readme同级别目录,linux下查看隐藏目录 ls -a

  4. 远程仓库管理:
    git remote -v 查看远程仓库
    git remote add unicomOrigin http:xxx.xxx 增加远程仓库
    git remote remove origin 删除远程仓库origin

  5. 查看分支:
    git branch 查看本地分支;
    git branch -a 查看本地分支和远程分支;
    git branch -vv 查看本地分支和远程分支的对应关系

  6. 本地分支操作:
    git branch feature 从当前分支创建feature分支
    git checkout dev 切换到dev分支
    git checkout -b feature 从当前所在分支新建feature分支,并切换到feature分支,创建分支和切换分支合一起
    git merge feature 将feature分支开发内容合并到当前所在分支
    git branch -d feature 删除feature分支

  7. 远程分支操作:
    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

  8. 提交代码
    git status
    git add readme.txt(git add . 标识当前目录所有文件)
    git commit -m ‘modify readme’
    git log {branchName} 列出当前分支(指定分支)的提交记录

  9. 回滚提交
    git checkout – fileName 用暂存区文件恢复(适用于文件的修改未提交到暂存区,想要恢复之前版本)
    git reset HEAD fileName 用版本库文件恢复(适用于文件的修改已经提交到暂存区,想要恢复之前的版本)
    git log
    git reset 版本号 fileName(HEAD表示当前版本,HEAD^表示前一个版本)查看工作区与本地仓库的提交记录,并回退到指定版本

  10. 标签管理:
    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和分支无关联;

  11. 参考:http://rogerdudler.github.io/git-guide/index.zh.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!